hdu 4726

来源:互联网 发布:centos syslog服务器 编辑:程序博客网 时间:2024/05/29 15:18

贪心 不是很难  各种细节注意

#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int num1[10],num2[10];int cc(int i, int j){    for(int k = 0; k <= 9; k++)    {        if( (k+i)%10 == j )            return k;    }    return 0;}int main(){    int t,ca = 1;    scanf("%d",&t);    getchar();    while(t--)    {        memset(num1, 0, sizeof(num1));        memset(num2, 0, sizeof(num2));        char a[1000010];        gets(a);        int len = strlen(a);        for(int i = 0; i < len; i++)            num1[a[i]-'0']++;        gets(a);        len = strlen(a);        for(int i = 0; i < len; i++)            num2[a[i]-'0']++;        int flag = 0, flag1 = 0;        printf("Case #%d: ",ca++);        for(int i = 9; i >= 0; i--)        {            for(int j = 0; j <= 9; j++)            {                int k = cc(j, i);                if(j != 0 && k != 0 && num1[j] && num2[k])                {                    num1[j]--, num2[k]--;                    flag = 1;                    if(i != 0)                    {                        flag1 = 1;                        printf("%d",i);                    }                    break;                }            }            if(flag)                break;        }        for(int i = 9; i >= 0; i--)        {            if(!flag1 && i == 0)            {                printf("0");                break;            }            for(int j = 0; j <= 9; j++)            {                int k = cc(j, i);                int d = min(num1[j], num2[k]);                num1[j] -= d;                num2[k] -= d;                for(int q = 0; q < d; q++)                {                    if(i != 0)                        flag1 = 1;                    printf("%d",i);                }            }        }        puts("");    }    return 0;}


原创粉丝点击