A25147. 超级幸运数
填空题
容易
知识点
题目描述
超级幸运数
题目描述:
乐乐有两个幸运数字,分别是 4 和 7。如果一个整数满足以下两个条件中的任意一个,乐乐就会称其为超级幸运数。条件如下:
1)整数中各数位上的数字都是幸运数字,例如 4、47、444;
2)整数中数位上所包含的所有幸运数字的总数是幸运数字,例如 414177(其中包含了 2 个 4 和 2 个7,共有 4 个幸运数字)。
给定 n 个整数,请判断其中有多少个超级幸运数。
例如:n = 3,3 个整数分别为 74、417、40444444;
整数 74 是超级幸运数,因为数位上的 7 和 4 都是幸运数字,满足条件 1;
整数 417 不是超级幸运数,因为数位中 1 不是幸运数字,不满足条件 1,且数位中幸运数字的总数是 2,2 不是幸运数字,不满足条件 2;
整数 40444444 是超级幸运数,因为 40444444 的数位中幸运数字的总数是 7,7 是幸运数字,满足条件 2;
综上所述,共有 2 个超级幸运数。
输入描述:
第一行输入一个整数 n(1≤n≤1000);
第二行输入 n 个整数(1≤整数≤109),整数之间以一个空格隔开。
输出描述:
输出一个整数,表示超级幸运数的数量。
样例输入:
3
74 417 40444444样例输出:
2参考答案
#include <iostream>
#include <string>
using namespace std;
int main() {
int n;
cin >> n;
int superLuckyCount = 0;
for (int i = 0; i < n; i++) {
long long num;
cin >> num;
string s = to_string(num);
bool condition1 = true;
int count47 = 0;
// 遍历每个字符
for (char c : s) {
if (c == '4' || c == '7') {
count47++;
} else {
condition1 = false;
}
}
bool condition2 = (count47 == 4 || count47 == 7);
if (condition1 || condition2) {
superLuckyCount++;
}
}
cout << superLuckyCount << endl;
return 0;
}答案解析
输入处理:
读取整数个数 n
循环读取每个整数 num
字符串转换:
使用 to_string() 将整数转换为字符串,便于逐字符处理
条件检查:
condition1:检查所有字符是否都是'4'或'7'
count47:统计'4'和'7'出现的总次数
condition2:检查总次数是否为4或7
结果统计:
如果满足任一条件,超级幸运数计数增加
最终输出满足条件的整数数量
上一题
下一题