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 }