題目是:x加上x的的各位數(shù)字得到y(tǒng),稱x為y的生成元。給出n(1<=n<=100000),求最小生成元。無解輸出0。以下是示例代碼。????問題是,我覺得if語句那一行的第二個(gè)判斷條件是不可能為真的,因?yàn)閍ns[y]如果非0的話,這個(gè)值一定比現(xiàn)在的m小,因?yàn)閙是遞增的呀。#include<stdio.h>
#include<string.h>
#define?maxn?100005
int?ans[maxn];int?main()
{
????int?T,n;
????memset(ans,0,sizeof(ans));
????for(int?m=1;m<maxn;m++)
????{
????????int?x=m,y=m;
????????while(x>0)
????????{
????????????y+=x%10;
????????????x/=10;
????????}
????????if(ans[y]==0||m<ans[y])????//不解
?????????ans[y]=m;//從1-maxn找每個(gè)數(shù)最小生成元,沒有為0
????}
????scanf("%d",&T);
????while(T--)????{
????????scanf("%d",&n);
????????printf("%d\n",ans[n]);//輸出每個(gè)數(shù)的最小生成元?
????
}
????return?0;
}
添加回答
舉報(bào)
0/150
提交
取消