生成元(Digit Generator ,ACM/ICPC Seoul 2005 ,UVa 1583)
生活随笔
收集整理的這篇文章主要介紹了
生成元(Digit Generator ,ACM/ICPC Seoul 2005 ,UVa 1583)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
生成元:如果 x 加上 x 各個數字之和得到y,則說x是y的生成元。
n(1<=n<=100000),求最小生成元,無解輸出0.
例如:n=216 , 解是:198?
198+1+9+8=216
?
解題思路:打表
循環將從1到10005(大點也可以)進行提前寫好。
例如:
1 ?1+1=2,--> ?arr[2]=1
13 13+1+3=17,-->arr[17]=13
34 ?34+3+4=41, -->arr[41]=34
打完表后,直接將給的數作為下標,輸出即可。
#include<stdio.h> #include<string.h> #define maxn 100005 int main(void) {int t,n,i,j,m,ans[maxn];memset(ans,0,sizeof(ans));for(m=1; m<maxn; m++){i=j=m;while(i>0){j+=i%10;i/=10;}if(ans[j]==0||m<ans[j])ans[j]=m;}scanf("%d",&t);while(t--){scanf("%d",&n);printf("%d\n",ans[n]);}return 0; }?if(ans[j]==0||m<ans[j])ans[j]=m;//如果ans[j]沒有被賦值,或者當前的m<ans[j](寫入最小生成元)。
?
轉載于:https://www.cnblogs.com/A--Q/p/5692374.html
總結
以上是生活随笔為你收集整理的生成元(Digit Generator ,ACM/ICPC Seoul 2005 ,UVa 1583)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基础拾遗------委托详解
- 下一篇: schema设计