数据范围是18位,把每一位加起来的和最多9*18 = 162
所以只需考虑n-162 ~ n的数即可,暴力解决
1 #include <iostream> 2 using namespace std; 3 typedef long long ll; 4 5 ll Div(ll n) 6 { 7 ll num = 0; 8 while (n) { 9 num += n % 10; 10 n /= 10; 11 } 12 return num; 13 } 14 15 int main() 16 { 17 ios::sync_with_stdio(false); 18 cin.tie(0); 19 int t; 20 cin >> t; 21 while (t--) { 22 ll n; 23 cin >> n; 24 bool flag = false; 25 for (ll i = max(0ll, n - 162); i <= n; i++) { 26 if (Div(i) + i == n) { 27 cout << i << endl; 28 flag = true; 29 break; 30 } 31 } 32 if (!flag) 33 cout << "Stupid SiriusRen" << endl; 34 } 35 return 0; 36 }