zoukankan      html  css  js  c++  java
  • OpenJudge/Poj 2105 IP Address

    1.链接地址:

    http://poj.org/problem?id=2105

    http://bailian.openjudge.cn/practice/2105

    2.题目:

    IP Address
    Time Limit: 1000MS   Memory Limit: 30000K
    Total Submissions: 18146   Accepted: 10456

    Description

    Suppose you are reading byte streams from any device, representing IP addresses. Your task is to convert a 32 characters long sequence of '1s' and '0s' (bits) to a dotted decimal format. A dotted decimal format for an IP address is form by grouping 8 bits at a time and converting the binary representation to decimal representation. Any 8 bits is a valid part of an IP address. To convert binary numbers to decimal numbers remember that both are positional numerical systems, where the first 8 positions of the binary systems are:
    2
    7
       2
    6
      2
    5
      2
    4
      2
    3
       2
    2
      2
    1
      2
    0
     
    
    128 64 32 16 8 4 2 1

    Input

    The input will have a number N (1<=N<=9) in its first line representing the number of streams to convert. N lines will follow.

    Output

    The output must have N lines with a doted decimal IP address. A dotted decimal IP address is formed by grouping 8 bit at the time and converting the binary representation to decimal representation.

    Sample Input

    4
    00000000000000000000000000000000 
    00000011100000001111111111111111 
    11001011100001001110010110000000 
    01010000000100000000000000000001 

    Sample Output

    0.0.0.0
    3.128.255.255
    203.132.229.128
    80.16.0.1
    

    Source

    3.思路:

    4.代码:

     1 #include "stdio.h"
     2 #include "stdlib.h"
     3 
     4 int f(char input[],int start)
     5 {
     6     int ans=0;
     7     int i;
     8     for(i=0;i<8;i++)
     9     {
    10        ans=ans*2+(input[i+start]-'0');
    11     }
    12     return ans;
    13 }
    14 int main()
    15 {
    16     int a,b,c,d;
    17     int n;
    18     int i;
    19     char input[34];
    20     scanf("%d
    ",&n);
    21     for(i=0;i<n;i++)
    22     {
    23         gets(input);
    24         a=f(input,0);
    25         b=f(input,8);
    26         c=f(input,16);
    27         d=f(input,24);
    28         printf("%d.%d.%d.%d
    ",a,b,c,d);
    29     }
    30     //system("pause");
    31     return 0;
    32 }
  • 相关阅读:
    P1121 环状最大两段子段和
    (转)背包9讲
    P1115 最大子段和
    P1108 低价购买
    P1103 书本整理
    P1095 守望者的逃离
    P1091 合唱队形
    P1077 摆花
    hadoop记录topk
    楼天城楼教主的acm心路历程(作为励志用)
  • 原文地址:https://www.cnblogs.com/mobileliker/p/3584599.html
Copyright © 2011-2022 走看看