题解 AT1194 【方程式】
这道题目n的范围其实是 。
所以暴力肯定是会 T 飞的。
那我们来想一下:
这里数字和最大是不是18个9是不是162?
那我们直接从 枚举不就完了?
代码:
#include <iostream>
using namespace std;
#define int long long
inline int Digit_sum(const int& x)
{
int tmp = x, sum = 0;
while(tmp) {sum += tmp % 10; tmp /= 10;}
return sum;
}
int ans[1020];
signed main()
{
int n;
int cur = 0;
cin >> n;
for(register int i = n - 162; i <= n; i++)
{
if(i + Digit_sum(i) == n) ans[++cur] = i;
}
cout << cur << endl;
for(register int i = 1; i <= cur; i++) cout << ans[i] << endl;
return 0;
}

浙公网安备 33010602011771号