6221 数的统计
时间限制: 1 s
空间限制: 256000 KB
题目等级 : 白银 Silver
题目描述 Description
有一个人名字叫A,B总喜欢打他。
这天,B接到了C老师的任务 - 狂打A,并且每当B打的次数与4有关(为4的倍数或含有4),他就会得到C的奖励 - 一颗果子。现给出A被打的次数,求B能得到几颗果子。
(注意:若打的次数既含有4,又为4的倍数,则B能获得2份果子)
输入描述 Input Description
一个数Num,代表A被打的次数。
输出描述 Output Description
一个数Ans,代表B能得到的果子数。
样例输入 Sample Input
40
样例输出 Sample Output
15
数据范围及提示 Data Size & Hint
数据范围:
对于 10% 的数据,N <= 50.
对于 30% 的数据,N <= 10^3。
对于 50% 的数据,N <= 10^5。
对于 100% 的数据,N <= 10^7。
提示:
All that needed - is to accurately simulate process.
我真的表示很无奈
#include#include #include #include #include using namespace std;int n,ans;int read(){ int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-') f=-1; ch=getchar();} while(ch>='0'&&ch<='9') {x=x*10+ch-'0'; ch=getchar();} return x*f;}int work(int x){ while(x) { if(x%10==4) return 1; x/=10; } return 0;}int main(){ n=read(); for(int i=1;i<=n;i++) { if(i%4==0) ans++; if(work(i)) ans++; } printf("%d",ans); return 0;}