http://codeforces.com/problemset/problem/110/A传送门
解释:这是cf上的一题a题,在洛谷上被分类成入门级别的难度,代码难度不高但是对对题目的理解能力要求比较高,或者说这题比较坑
题目大意:
如果一个数仅包含4和7,那么它就是一个”幸运数字”。 如果一个数本身不是幸运数,但是它所含有的数字4和7的个数之和为一个”幸运数字”,那么它就是一个”类幸运数字”。 给您一个数,请编程判断它是不是”类幸运数字”。
输入格式
一行一个整数N(N在64位整数(long long / int64)范围内)。
输出格式
一行一个字符串,如果N是”类幸运数字”则输出”YES”,否则输出”NO”。
输入输出样例
输入样例#1:复制
40047
输出样例#1:复制
NO
输入样例#2:复制
7747774
输出样例#2:复制
YES
输入样例#3:复制
1000000000000000000
输出样例#3:复制
NO
题解:思路上没有难度,但要注意你所判断的是否是“类幸运数字”,而不是“幸运数字”,也就是说你其实可以不用管是否是幸运数字
#include <iostream>
using namespace std;
int main()
{
string s;
cin >> s;
int num = 0;
bool f = true;
for(int i=0; i<s.size(); i++)
{
if( s[i] == '4'|| s[i] == '7')
num ++;
}
num == 4 || num == 7 ? cout << "YES" << endl : cout<<"NO" << endl;
//因为s的长度有限制所以直接判断是否4个或者7个就可以了,4和7才是幸运数字
}