| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 725 人关注过本帖
标题:杭电1002
取消只看楼主 加入收藏
Magic_July
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:109
注 册:2012-9-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
杭电1002
A + B问题II

时间限制:2000/1000 MS(Java /其他)内存限制:三万二千七百六十八分之六万五千五百三十六K(Java /其他的)
总提交(S):141254接受提交的文件:26797


问题描述
我有一个非常简单的问题。由于两个整数A和B,你的任务是计算A + B的总和
 

输入
在输入的第一行包含一个整数T(1 <= T <= 20),这意味着测试用例的数量。那么T线跟随,每行包含两个正整数,A和B请注意,这个整数是非常大的,这意味着你不应该使用32位的整数处理。你可以假设每个整数的长度不会超过1000。
 

产量
对于每个测试案例,你应该输出两行。第一行是“案例#:”#指的测试用例的数量。第二行是一个公式“A + B = SUM”,总和是指A + B.注意的结果有一定的空间int的方程。两个测试用例之间输出一个空行。
 

样例输入
2
1 2
112233445566778899 998877665544332211
 

样本输出
案例1://Case 1:
1 + 2 = 3

案例2://这里应该是Case 2:
112233445566778899 + 998877665544332211 = 1111111111111111110
以上是翻译过来的
我的代码
程序代码:
#include"stdio.h"
#include"string.h"
#include"stddef.h"
int main()
{
    char a[1001],b[1001];
    int n,i,j,mi,k,l;
    scanf("%d",&n);
    getchar();
    for(i=0;i<n;i++)
    {
        int x[1001]={0};
        for(j=0;j<1001;j++)
        {
            scanf("%c",&a[j]);
            if(a[j]==' ')
            {
                a[j]='\0';break;
            }
        }
        gets(b);
        //printf("%s%s\n",b,a);
        //printf("%d,%d\n",strlen(a),strlen(b));
        for(j=strlen(a)-1,k=strlen(b)-1,l=0;j>=0&&k>=0;j--,k--,l++)
        {
            x[l]+=a[j]+b[k]-48*2;//printf("x[%d]=%d\n",j,x[j]);
            if(x[l]>=10)
            {
                x[l+1]+=x[l]/10;
                x[l]=x[l]%10;
                if(j-1<0&&k-1<0&&strlen(a)==strlen(b))
                {
                    l++;
                }
            }
        }
        if(strlen(a)<strlen(b))
        {
            for(j=strlen(a);j<strlen(b);j++,l++)
            {x[l]+=b[j]-48;
            if(x[l]>=10)
            {x[l+1]+=x[l]/10;x[l]=x[l]%10;
            if(j+1>=strlen(b))
            {l+=2;break;}
            }}
        }
        else if(strlen(a)>strlen(b))
        {
            for(j=strlen(b);j<strlen(a);j++,l++)
            {x[l]+=a[j]-48;
            if(x[l]>=10)
            {x[l+1]+=x[l]/10;x[l]=x[l]%10;
            if(j+1>=strlen(a))
            {l+=2;break;}
            }}
        }
        printf("Case %d:\n%s + %s = ",i+1,a,b);
        for(j=l-1;j>=0;j--)
        printf("%d",x[j]);
        printf("\n");
        if(i+1<n)
        printf("\n");
    }
    return 0;
}

这道是在论坛里看到有人求助,自己去写了下
测试时答案应该没有错
个人觉得是格式错误
但交了后是WA
求解释
搜索更多相关主题的帖子: 正整数 测试 Java 
2013-02-21 14:25
Magic_July
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:109
注 册:2012-9-25
收藏
得分:0 
回复 2楼 rjsp
http://acm.hdu.
这是链接
这几天有事情
没上
回复晚了
2013-02-24 16:17
Magic_July
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:109
注 册:2012-9-25
收藏
得分:0 
回复 4楼 beyondyf
不解
return c + i;

类型不一样
c是地址,+i后是什么意识 ?
2013-02-24 19:41
快速回复:杭电1002
数据加载中...
 
   



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

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