标签:http io ar for sp amp on c line
2013 ACM/ICPC Asia Regional Online —— Warmup2
贪心
给出两个位数一样的数,位数<=10^6;
数字的每一位都能移动, 但移动后的整数一定要是合法的, 即无前导零。 使得 A + B 最大
特殊加法: 8+2=0; 8+3=1;
贪心从9开始取,第一位不能为0;
#include "stdio.h" #include "string.h" char stra[1000100],strb[1000100]; int Min(int a,int b) { if (a<b) return a;else return b; } int main() { int Case,i,j,key,k,num,ii; int a[11],b[11]; scanf("%d",&Case); for (ii=1;ii<=Case;ii++) { scanf("%s%s",stra,strb); printf("Case #%d: ",ii); memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); for (i=0;stra[i];i++) a[stra[i]-'0']++; for (i=0;strb[i];i++) b[strb[i]-'0']++; key=0; for (i=9;i>=1;i--) { for (j=1;j<=9;j++) { k=(i-j+10)%10; if (k==0) continue; if (a[j]==0 || b[k]==0) continue; a[j]--; b[k]--; key=1; printf("%d",i); break; } if (key==1) break; } if (key==0) { printf("0\n"); continue; } for (i=9;i>=0;i--) { for (j=0;j<=9;j++) { k=(i-j+10)%10; if (a[j]==0 || b[k]==0) continue; num=Min(a[j],b[k]); a[j]-=num; b[k]-=num; while (num) {printf("%d",i);num--;} } } printf("\n"); } return 0; }
标签:http io ar for sp amp on c line
原文地址:http://blog.csdn.net/u011932355/article/details/39027115