您的位置:首页 > 其它

HDU 1271 整数对

2011-11-28 18:13 183 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1271

若n是奇数,只能去掉a的最后一个数字

若n是偶数,枚举每一位数字

View Code

#include <stdio.h>
#include <stdlib.h>
int ans[100]={0},n;
int cmp(const void *a,const void *b)
{
return *(int*)a-*(int*)b;
}
int f(int x)
{
if (x==0 || x-x/11*11>9) return -1;
else return x/11*10+x-x/11*11;
}
int main()
{
int x,i,t;
while (scanf("%d",&x) && x)
{
n=0;
if ((t=f(x))>=0) ans[++n]=t;
if (x%2==0)
for (i=10;i<=x;i*=10)
{
int flag,j;
if ((t=f(x/i))>=0)
{
t=t*i+x%i/2;
for (flag=1,j=1;j<=n;j++) if (ans[j]==t) flag=0;
if (flag) ans[++n]=t;
}
if ((t=f(x/i-1))>=0)
{
t=t*i+(i+x%i)/2;
for (flag=1,j=1;j<=n;j++) if (ans[j]==t) flag=0;
if (flag) ans[++n]=t;
}
}
qsort(ans+1,n,sizeof(ans[0]),cmp);
if (n==0) printf("No solution.\n");
else {
for (i=1;i<n;i++) printf("%d ",ans[i]);
printf("%d\n",ans
);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: