码迷,mamicode.com
首页 > 其他好文 > 详细

2016中国大学生程序设计竞赛(长春)-重现赛 题解

时间:2016-10-04 18:54:15      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:

J. Ugly problem

题意:把大数字拆成不超过50个的回文数

题解:每次用不超过大数字的回文数去减,得到的结果要再这样执行,注意"10"这个数的坑点

技术分享
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <string>
#include <cstdlib>
#include <vector>
#include <set>
#include <map>
using namespace std;
const double eps=1e-8;
int len;
void subtract(char *a,char *b,char *c)
{
    for(int i=len-1;i>=0;i--)
    {
        c[i]=a[i]-b[i]+0;
        if(c[i]<0)c[i]+=10,a[i-1]--;
    }
}

char str[2][1005],sub[50][1005];
int main()
{
    int i,j,k,n;
    scanf("%d",&n);getchar();
    for(int h=1;h<=n;h++)
    {
        memset(sub,0,sizeof(sub));
        gets(str[0]);
        len=strlen(str[0]);
        int old=1,now=0;
        int cnt=0;
        for(i=0;str[now][i];)
        {
            old^=1,now^=1;
            if(!strcmp(str[old]+i,"10"))
            {
                sub[cnt][0]=9;sub[cnt][1]=0;cnt++;
                sub[cnt][0]=1;sub[cnt][1]=0;cnt++;
                break;
            }
            for(j=i;j<=len-1-j+i && str[old][j]<=str[old][len-1-j+i];j++);
            strcpy(sub[cnt],str[old]);
            if(j<len-1-j+i)
            {
                sub[cnt][(i+len-1)/2]--;
                for(j=(i+len-1)/2;j>=0 && sub[cnt][j]<0;j--)sub[cnt][j]+=10,sub[cnt][j-1]--;
            }
            for(j=0;sub[cnt][j]==0;j++);
            for(k=j;k<=len-1-k+j;k++)sub[cnt][len-1-k+j]=sub[cnt][k];
            sub[cnt][len]=0;
            subtract(str[old],sub[cnt],str[now]);
            for(;str[now][i]==0;i++);
            cnt++;
        }
        printf("Case #%d:\n%d\n",h,cnt);
        for(i=0;i<cnt;i++)
        {
            char *s;
            for(s=sub[i];*s==0;s++);
            puts(s);
        }
    }
    return 0;
}
J ugly problem

 

2016中国大学生程序设计竞赛(长春)-重现赛 题解

标签:

原文地址:http://www.cnblogs.com/dgutfly/p/5930790.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!