2B - Amy

数据范围是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 }

猜你喜欢

转载自www.cnblogs.com/AntonLiu/p/10738367.html
今日推荐