Qiuqiqiu  
不管道路多么崎岖坎坷,我永远不停下追逐梦想的脚步!

http://acm.hdu.edu.cn/showproblem.php?pid=1271

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

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

View Code
 1 #include <stdio.h>
2 #include <stdlib.h>
3 int ans[100]={0},n;
4 int cmp(const void *a,const void *b)
5 {
6 return *(int*)a-*(int*)b;
7 }
8 int f(int x)
9 {
10 if (x==0 || x-x/11*11>9) return -1;
11 else return x/11*10+x-x/11*11;
12 }
13 int main()
14 {
15 int x,i,t;
16 while (scanf("%d",&x) && x)
17 {
18 n=0;
19 if ((t=f(x))>=0) ans[++n]=t;
20 if (x%2==0)
21 for (i=10;i<=x;i*=10)
22 {
23 int flag,j;
24 if ((t=f(x/i))>=0)
25 {
26 t=t*i+x%i/2;
27 for (flag=1,j=1;j<=n;j++) if (ans[j]==t) flag=0;
28 if (flag) ans[++n]=t;
29 }
30 if ((t=f(x/i-1))>=0)
31 {
32 t=t*i+(i+x%i)/2;
33 for (flag=1,j=1;j<=n;j++) if (ans[j]==t) flag=0;
34 if (flag) ans[++n]=t;
35 }
36 }
37 qsort(ans+1,n,sizeof(ans[0]),cmp);
38 if (n==0) printf("No solution.\n");
39 else {
40 for (i=1;i<n;i++) printf("%d ",ans[i]);
41 printf("%d\n",ans[n]);
42 }
43 }
44 return 0;
45 }

 

posted on 2011-11-28 18:13  Qiuqiqiu  阅读(190)  评论(0编辑  收藏  举报