原题链接:
http://codeforces.com/problemset/problem/808/A
题意:
给一个数n,求n与比n大的最小的只有一个非零为数的差(看不懂就自己翻译一下原题吧0.0);
思路:
找出所有只有一个非零为数,遍历求解;
代码:
1 #include<cstdio> 2 #include<string> 3 #include<cstring> 4 #include<iostream> 5 #include<algorithm> 6 7 using namespace std; 8 9 int main() 10 { 11 long long a[11][10]={0}; 12 int n,i,j,x,d=0,fg=1; 13 a[0][1]=0; 14 for(i=1;i<10;i++) 15 { 16 a[1][i]=i; 17 } 18 for(i=2;i<=10;i++) 19 { 20 for(j=1;j<10;j++) 21 { 22 a[i][j]=a[i-1][j]*10; 23 } 24 } 25 cin>>n; 26 x=n; 27 while(x) 28 { 29 d++; 30 x/=10; 31 } 32 for(i=1;i<10;i++) 33 { 34 if(a[d][i]>n) 35 { 36 cout<<a[d][i]-n<<endl; 37 fg=0; 38 break; 39 } 40 } 41 if(fg) //防止n为某位最大的数,而导致没有输出;如:99,因为两位数的只有一个非零位的数最大是90; 42 cout<<a[d+1][1]-n<<endl; 43 return 0; 44 }
---------------------欢迎评论------------------------------