• 2016中国大学生程序设计竞赛(长春)-重现赛 1010Ugly Problem 回文数 模拟


    Ugly Problem

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
    Total Submission(s): 0    Accepted Submission(s): 0
    Special Judge


    Problem Description
    Everyone hates ugly problems.

    You are given a positive integer. You must represent that number by sum of palindromic numbers.

    A palindromic number is a positive integer such that if you write out that integer as a string in decimal without leading zeros, the string is an palindrome. For example, 1 is a palindromic number and 10 is not.
     
    Input
    In the first line of input, there is an integer T denoting the number of test cases.

    For each test case, there is only one line describing the given integer s (1leq s leq 10^{1000}).
     
    Output
    For each test case, output “Case #x:” on the first line where x is the number of that test case starting from 1. Then output the number of palindromic numbers you used, n, on one line. n must be no more than 50. �en output n lines, each containing one of your palindromic numbers. Their sum must be exactly s.
     
    Sample Input
    2
    18
    1000000000000
     
     
    Sample Output
    Case #1:
    2
    9
    9
    Case #2:
    2
    999999999999
    1
     
    Hint
    9 + 9 = 18 999999999999 + 1 = 1000000000000
     
    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5920
    题意:将一个数拆成n(n<=50)个回文数的和。
    代码:
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    char s[2000];
    int ans[100][2000];
    int gg[100];
    int sub(int t,int len)
    {
        int i;
        for(i=len-1; i>=0; i--)
        {
            s[i]=s[i]-'0'-ans[t][i];
            if(s[i]<0)
            {
                s[i]+=10+'0';
                s[i-1]-=1;
            }
            else s[i]+='0';
        }
        for(i=0; i<len; i++)
            if(s[i]!='0') break;
        return i;
    }
    int main()
    {
        int i,j,t,T;
        while(scanf("%d",&T)!=EOF)
        {
            getchar();
            for(int asd=1; asd<=T; asd++)
            {
                scanf("%s",s);
                memset(ans,0,sizeof(ans));
                int pre=0,len=strlen(s);
                t=0;
                while(pre<len)
                {
                    int sign=1;
                    for(i=pre,j=len-1; i<=j; i++,j--)
                    {
                        ans[t][i]=ans[t][j]=s[i]-'0';
                        if(ans[t][j]>s[j]-'0') sign=0;
                        else if(ans[t][j]<s[j]-'0')sign=1;
                    }
                    gg[t]=pre;
                    if(sign==0)
                    {
                        i--;
                        ans[t][i]-=1;
                        while(i>=0&&ans[t][i]<0)
                        {
                            ans[t][i]+=10;
                            ans[t][i-1]-=1;
                            i--;
                        }
                        for(i=pre,j=len-1; i<=j; i++,j--)
                            ans[t][j]=ans[t][i];
                        if(ans[t][pre]==0)
                        {
                            ans[t][len-1]=9;
                            gg[t]=pre+1;
                        }
                    }
                    pre=sub(t,len);
                    t++;
                }
                printf("Case #%d:
    ",asd);
                printf("%d
    ",t);
                for(i=0; i<t; i++)
                {
                    for(j=gg[i]; j<len; j++)
                        printf("%d",ans[i][j]);
                    printf("
    ");
                }
            }
        }
        return 0;
    }
    View Code
    I am a slow walker,but I never walk backwards.
  • 相关阅读:
    CART回归树基本原理(具体例子)
    Leetcode 236. 二叉树的最近公共祖先 & 235. 二叉搜索树的最近公共祖先(Python3)
    c和c++的区别
    最小编辑距离python
    判断单链表是否有环,并找出环的入口python
    关键词提取算法-TextRank
    leetcode406 ,131,1091 python
    id3算法python实现
    Relu激活函数的优点
    从 AllocateMessageQueueConsistentHash 看一致性哈希
  • 原文地址:https://www.cnblogs.com/GeekZRF/p/5931419.html
Copyright © 2020-2023  润新知