題目連結:http://codeforces.com/contest/876/problem/C
題意:
定義函式:f(x) = x + 十進位制下x各位上的數字之和
給你f(x)的值(f(x) <= 1e9),讓你輸出所有可能的x值。
題解:
部分列舉。
考慮可能的x的範圍:
∵ x < f(x)
∴ 十進位制下x各位上的數字之和 < 9*9 ≈ 100
所以x列舉[f(x)-100, f(x)]之間的數就好了。
AC Code:
1 #include <iostream> 2 #include <stdio.h> 3 #include <string.h> 4 #include <vector> 5 6 using namespace std; 7 8 int n; 9 vector<int> v; 10 11 int main() 12 { 13 cin>>n; 14 for(int i=max(1,n-100);i<n;i++) 15 { 16 int sum=0; 17 int t=i; 18 while(t) 19 { 20 sum+=t%10; 21 t/=10; 22 } 23 if(sum+i==n) v.push_back(i); 24 } 25 cout<<v.size()<<endl; 26 for(int i=0;i<v.size();i++) 27 { 28 cout<<v[i]<<endl; 29 } 30 }