Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) C. Classroom Watch

http://codeforces.com/contest/876/problem/C

题意:

现在有一个数n,它是由一个数x加上x每一位的数字得到的,现在给出n,要求找出符合条件的每一个x。

思路:

n最大1e9,那么9个9最多才加81,所以最多枚举100次,就可以找到所有符合条件的数。

代码:

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <vector>
 4 using namespace std;
 5 
 6 vector<int> v;
 7 
 8 int main()
 9 {
10     int n;
11 
12     scanf("%d",&n);
13 
14     if (n >= 100)
15     {
16         for (int i = n - 100;i <= n;i++)
17         {
18             int tmp = i;
19 
20             int sum = 0;
21 
22             while (tmp)
23             {
24                 sum += tmp % 10;
25                 tmp /= 10;
26             }
27 
28             if (i + sum == n)
29             {
30                 v.push_back(i);
31             }
32         }
33     }
34     else
35     {
36         for (int i = 1;i <= n;i++)
37         {
38             int tmp = i;
39 
40             int sum = 0;
41 
42             while (tmp)
43             {
44                 sum += tmp % 10;
45                 tmp /= 10;
46             }
47 
48             if (i + sum == n)
49             {
50                 v.push_back(i);
51             }
52         }
53     }
54 
55     printf("%d
",v.size());
56 
57     for (int i = 0;i < v.size();i++)
58         printf("%d%c",v[i],i == v.size() - 1 ? '
' : ' ');
59 
60     return 0;
61 }
原文地址:https://www.cnblogs.com/kickit/p/7680621.html