| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 458 人关注过本帖
标题:翻版的很大整数相加
只看楼主 加入收藏
傻瓜菜
Rank: 2
来 自:earth
等 级:论坛游民
帖 子:73
专家分:66
注 册:2011-10-4
结帖率:94.44%
收藏
已结贴  问题点数:20 回复次数:4 
翻版的很大整数相加
程序代码:
#include<stdio.h>
#include<string.h>
int main()
{
    char a[100],b[100],temp[100];
    int pa[100],pb[100],n,i,la,lb,j,k;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%s %s",a,b);
        la=strlen(a);
        lb=strlen(b);
        if(la<lb)
        {
            strcpy(temp,a);
            strcpy(a,b);
            strcpy(b,temp);
            j=la;
            la=lb;
            lb=j;
        }
        j=0;
        for(i=la-1;i>=0;i--)
            pa[j++]=a[i]-'a'+1;
        pa[j]=0;
        j=0;
        for(i=lb-1;i>=0;i--)
            pb[j++]=b[i]-'a'+1;
        for(i=0,k=0;i<la,k<lb;i++,k++)
        {

            pa[i]+=pb[k];
            if(pa[i]>26)
            {
                pa[i]-=26;
                pa[i+1]++;
            }
        }
        if(pa[la]!=0) j=la;
        else j=la-1;
        for(i=j;i>=0;i--)
            printf("%c",pa[i]+'a'-1);
        printf("\n");
        if(n)
            printf("\n");
    }
    return 0;
}

Description

计算A+B,但是这里A,B表示的是字符串。并且'a'表示1,'b'表示2...'z'表示26,如果两个字母相加的结果超过26,就进位。如:abcdef+aaaaaa,结果为bcdefg,a+z=aa.

Input

第一行为N,表示接下来有N组测试数据。接下来的N行表示N组测试数据,每组测试数据包含两个字符串,中间用空格隔开,并且保证每个字符串中的字符都是小写字母。

Output

输出A+B的结果,输出要求也是字符串。每两组数据之间有一个空行。

Sample Input

2
abcdef aaaaaa
a z
Sample Output

bcdefg

aa
2012-03-04 09:37
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:20 
求网址

                                         
===========深入<----------------->浅出============
2012-03-04 10:52
傻瓜菜
Rank: 2
来 自:earth
等 级:论坛游民
帖 子:73
专家分:66
注 册:2011-10-4
收藏
得分:0 
回复 2楼 laoyang103
http://acm.zjgsu.
不过已经解决了,zzz+zzz 这种情况有问题
2012-03-04 11:02
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
回复 3楼 傻瓜菜
这题表示很纠结  可否看一下你的AC代码

                                         
===========深入<----------------->浅出============
2012-03-04 11:41
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <string.h>
char a[100],b[100];
char list[] = {122,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122};
int main()
{
    int t,i,j,an,bn,mn,low,temp;
    scanf("%d",&t);
    getchar();
    int flag = 0;
    while(t--)
    {
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        scanf("%s%s",a,b);
        an = strlen(a);
        bn = strlen(b);
        for(i = 0,j = an-1;i<=j;i++,j--)
        {temp = a[i]-96;a[i] = a[j]-96;a[j] = temp;}
        for(i = 0,j = bn-1;i<=j;i++,j--)
        {temp = b[i]-96;b[i] = b[j]-96;b[j] = temp;}
        mn = an>bn?an:bn;
        for(low = 0,i = 0;i<mn;i++)
        {
            a[i] = a[i]+b[i]+low;
            low = (a[i]-1)/26;
            a[i]-=low*26;
        }
        if(low)a[i++] = low;
        if(flag) putchar('\n'); else flag = 1;
        while(i--)printf("%c",list[a[i]]);
        printf("\n");       
    }
    return 0;
}

                                         
===========深入<----------------->浅出============
2012-03-04 20:56
快速回复:翻版的很大整数相加
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016896 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved