題目是:x加上x的的各位數字得到y,稱x為y的生成元。給出n(1<=n<=100000),求最小生成元。無解輸出0。以下是示例代碼。????問題是,我覺得if語句那一行的第二個判斷條件是不可能為真的,因為ans[y]如果非0的話,這個值一定比現在的m小,因為m是遞增的呀。#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找每個數最小生成元,沒有為0
????}
????scanf("%d",&T);
????while(T--)????{
????????scanf("%d",&n);
????????printf("%d\n",ans[n]);//輸出每個數的最小生成元?
????
}
????return?0;
}
添加回答
舉報
0/150
提交
取消