【qduoj - 1010】easy problem(巧妙的枚举)
生活随笔
收集整理的這篇文章主要介紹了
【qduoj - 1010】easy problem(巧妙的枚举)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題干:
給你一個數字N,N的范圍是1~1000000,求一個最小的正整數M,這個數字M的各個位的數字加上它本身之和恰好為N。當然,如果沒有解,輸出0。
輸入
輸入數據由多組數據組成,每行由一個數字N組成(1<=N<=1000000)。
輸出
對于每組數據,輸出僅一行包含一個整數M。如果對于每個N,存在最小的M,則輸出這個最小值。如果不存在這個最小的M,則輸出0。
輸入樣例 1?
216 121 2005輸出樣例 1
198 0 1979解題報告:
? ? ? 這題枚舉的方法比較巧妙,因為最大的數字就是1e6-1,也就是6*9=54,所以從54開始枚舉就可以了
AC代碼:
#include<cstdio> #include<queue> #include<cstring> #include<cmath> #include<map> #include<iostream> #include<algorithm> #define ll long long const ll mod = 1e9+7; using namespace std; int n; int main() {while(~scanf("%d",&n)) {int flag = 0;for(int i = 54; i>=0; i--) {int res = n - i;if(res <= 0 ) continue;int tmp= 0;while(res) {tmp += res%10;res/=10;}if(tmp == i) {printf("%d\n",n-i);flag = 1;break;}}if(!flag) printf("0\n");}return 0 ; }?
總結
以上是生活随笔為你收集整理的【qduoj - 1010】easy problem(巧妙的枚举)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 清华教授:中国每辆车都要向国外交专利费
- 下一篇: 雷军:小米12S Ultra不测DXO了