您的位置:首页 > 其它

水题 第一站 关于521

2017-07-08 20:00 281 查看
之前做过的一道题,不过貌似当时仅仅也只是看懂了而已,将数字转化为字符串,然后运用字符串的函数完成的,这样完成的意义不大。

见到这个题目的第一想法就是暴力,两个函数,一个愤怒,一个非常愤怒。但是没有出结果。

(1)运用逐位判断的方法,即除余相结合

(2)有的细节没注意到,对了好几遍才发现错误原因

(3)还是不太理解打表法,大概是依次迭代吧!

(4)另外太大的数组最好在main函数外声明。

#include <stdio.h>
#include <math.h>
using namespace std;
int ans[2][1000001]={0};
int main()
{
int a, b;

for(int i=125; i<1000000; i++)
{
if(( i%10==1 || (i/10)%10==1 || (i/100)%10==1 || (i/1000)%10==1 ||(i/10000)%10==1|| i/100000==1)
&& ( i%10==2 || (i/10)%10==2 || (i/100)%10==2 || (i/1000)%10==2 || (i/10000)%10==2||i/100000==2)
&&( i%10==5 || (i/10)%10==5 || (i/100)%10==5 || (i/1000)%10==5 || (i/10000)%10==5||i/100000==5))

ans[0][i]=ans[0][i-1]+1;
else
ans[0][i]=ans[0][i-1];
if(i%1000==521 || (i/10)%1000==521 || (i/1
b811
00)%1000==521|| i/1000==521)
ans[1][i]=ans[1][i-1]+1;
else
ans[1][i]=ans[1][i-1];
}
int m=0;
while (scanf("%d %d",&a, &b)!=EOF)
{
printf("Case %d:",++m);
printf("%d %d\n",ans[0][b]-ans[0][a-1],ans[1][b]-ans[1][a-1]);

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: