zoukankan      html  css  js  c++  java
  • 575 Skew Binary

    题目大意:

    题目原文:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=7&page=show_problem&problem=516

    斜二进制数满足:

    所以0-10分别是0, 1, 2, 10, 11, 12, 20, 100, 101, 和 102.要求输入斜二进制数,输出十进制数。

    首先看到题目n不大于 231 - 1 = 2147483647 而例子中就有2147483647,所以输入的斜二进制数的位数不会超过31位。如此多的位数,我采用了字符串数组来储存输入。由于是字符串,那么数组长度就要32了。然后用一个char*指针变量来指向各个位数进行计算。计算的结果以long型储存、输出。

    附上代码:

    View Code
     1 #include<stdio.h>
     2 #include<math.h>
     3 int main()
     4 {
     5  char a[32],*z;
     6  long x;
     7  int i,j;
     8  while(1)
     9  {
    10   scanf("%s",a);
    11   if(a[0]=='0'&&a[1]=='\0') break;//退出条件 
    12   for(i=0;i<32;i++)
    13   {
    14    if(a[i]==0) {z=&a[i];break;} //使指针z指向'\0'                
    15   }
    16   j=1;
    17   x=0;
    18   while(1)
    19   {
    20    z--;
    21    if(*z!=0) x+=(*z-'0')*((long)pow(2,j)-1); 
    22    j++;
    23    if(z==a) break;//也可以使用do-while循环控制退出 
    24   }
    25   printf("%ld\n",x);
    26  }
    27  return 0;    
    28 }
  • 相关阅读:
    Python学习之路2☞数据类型与变量
    Python学习之路1☞简介及入门代码
    OpenStack组件系列☞horizon搭建
    39
    38
    37
    36
    35
    33
    32
  • 原文地址:https://www.cnblogs.com/syiml/p/2910768.html
Copyright © 2011-2022 走看看