2096 - 数字计数
时间限制 : 1 秒
内存限制 : 128 MB
大家都知道南方人说普通话不标准,有些同学不会读4,而有些同学不会读7。于是想到了这样一个问题,虾米读自然数的时候,每次遇到含有4和7的数则跳过不读,那么当他读到数字N的时候,是他读的第几个数字呢?
题目输入
第一行输入一个数字Case,表示一共有多少组测试数据。
接下来Case个测试数据块。
每个测试数据块一行,一个数字N。
Case<=100000,1<=N<=2*10^9。
题目输出
每个测试数据输出一行,表示读的第几个数字
输入/输出样例
输入格式
6 1 2 3 5 6 8
输出格式
1 2 3 4 5 6
C++解答
#include<cstdio> #include<cstring> int main() { int n; scanf("%d",&n); while(n--) { char s[20]; int num; scanf("%d",&num); sprintf(s,"%d",num); int len=strlen(s); int ans=0; int mov=1; for(int i=1;i<len;mov*=8,i++); for(int i=0;i<len-1;i++) { if(s[i]>'6') ans+=(s[i]-'2')*mov; else if(s[i]>'3') ans+=(s[i]-'1')*mov; else ans+=(s[i]-'0')*mov; mov/=8; } if(s[len-1]>'6')ans+=s[len-1]-'2'; else if(s[len-1]>'3')ans+=s[len-1]-'1'; else ans+=s[len-1]-'0'; printf("%d\n",ans); } return 0; }