hdu4278 小想法

来源:互联网 发布:老鼠走迷宫c语言 编辑:程序博客网 时间:2024/05/16 08:32
题意:
      有几个计数器,从1开始计数,计数器有问题,没有3,8这两个数字,只要出现3或者8,那么直接跳过,如 12579 下一个数字就是 12590 ,给你一个数字,问他实际计数了多少。


思路:
     直接把输入数字的每一位处理一下,对于当前这位,如果它 >= 3 && <= 8 那么-1 ,

如果它 >8 那么-2,这样就把他变成另一个数,此时的这个数是八进制数,在把他转换成十进制数就行了。。如 59 先 把它变成 47,然后转换成十进制是 7 + 4 * 8 = 39,就ok了。


#include<stdio.h>#include<string.h>#include<math.h>int main (){   char str[100];   while(~scanf("%s" ,str) && str[0] != '0')   {      int l = strlen(str) - 1;      int tt = 0;      int ans = 0;      for(int i = l ;i >= 0 ;i --)      {         int now = str[i] - 48;         if(now >3 && now < 8)now --;         if(now >8) now -= 2;         ans +=now * (int)pow(8 ,tt);         tt ++;      }      printf("%s: %d\n", str,ans);   }   return 0;}

0 0