链接
从1开始枚举 i,从 i + 1开始枚举 j,这样可以保证不重复计数.可以用 string 的 find函数判断数位中有无 2 和 4.
Code:
#include <bits/stdc++.h>
using i64 = long long;
i64 sum;
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
for (int i = 1; i < 673; i++) {
for (int j = i + 1; j < 2019; j++) {
//只看比 i 大的数字:去重
int k = 2019 - i - j;
std::string a = std::to_string(i);
std::string b = std::to_string(j);
std::string c = std::to_string(k);
//数字转字符串
if (a.find("2") == -1 && a.find("4") == -1 && b.find("2") == -1 && b.find("4") == -1 && c.find("2") == -1 && c.find("4") == -1) {
if(j < k) {
sum++;
}
}
}
}
std::cout<<sum;
return 0;
}