题目是: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
提交
取消