看过别人的解题思路才做出来的,解题思路网上一大片……把这个代码贴出来,是觉得有个问题大家一定要注意,就是可能有重复的值……
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int ans[1000];
int cmp(const void *a,const void *b)
{
return (*((int *)a)-*((int *)b));
}
int main()
{
int n;
int i,k,t,a,b,c;
while(scanf("%d",&n)==1)
{
if(!n)
break;
k=0;
t=1;
memset(ans,0,sizeof(ans));
while(n/t!=0)
{
a=n/t/11;
b=n/t%11;
if(b<10&&a+b!=0)
{
c=n-(11*a+b)*t;
if(c%2==0)
{
ans[k++]=a*t*10+b*t+c/2;
}
}
b--;
if(b>=0&&a+b!=0)
{
c=n-(11*a+b)*t;
if(c%2==0)
{
ans[k++]=a*t*10+b*t+c/2;
}
}
t=t*10;
}
qsort(ans,k,sizeof(int),cmp);
if(!k)
printf("No solution.\n");
else
{
printf("%d",ans[0]);
for(i=1;i<k;i++)
if(ans[i]!=ans[i-1])//就是这里的问题,必须得排除重复值的问题!因为没有注意到这个问题,纠结了不少时间!
printf(" %d",ans[i]);
printf("\n");
}
}
return 0;
}
感触:数学类的题目都是那么需要技巧啊~~~