虽说题目给了1e18的范围摆明了想让我们用longlong,但是这样的一次一次 /=10 还是很烦躁呀,直接用string,每一位不就是当前位数数值了嘛(其实也要减去'0')
题目意思是说,一个所有数位都是4或者7的数字称为幸运数,一个数“包含4或7的个数”为幸运数的称为接近幸运数,问给出的数是不是“接近幸运数”
模拟咯~
数出4、7的个数,因为就18位,所以只能是4个或者7个,都不用再判断一遍的。
Code:
#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
// http://codeforces.com/contest/110
// Nearly Lucky Number
int main()
{
int cnt=0;
string s; cin>>s;
for(int i=0;i<s.length();i++)
if(s[i]=='4'||s[i]=='7')cnt++;
if(cnt==4 || cnt==7)cout<<"YES";
else cout<<"NO";
return 0;
}

本博客探讨了一个有趣的问题:如何判断一个给定的数是否为接近幸运数。幸运数是仅由数字4和7组成的正整数,而接近幸运数则是指其包含的4或7的数量为一个幸运数。通过分析输入数n,我们能够快速判断它是否满足接近幸运数的条件。
447

被折叠的 条评论
为什么被折叠?



