C - A + B Problem II HDU - 1002

普通大数相加:

(1)超时: while循环条件不改变,导致死循环

(2)wa:   s1,s2为字符串,len1=strlen(s1),len2=strlen(s2);

      swap(s1,s2)后,没有交换len1,len2

(3)格式错误:   最后一行不要换行,每两个测试样例之间换行。

看来我的菜是永无止境的,下次写代码,记得注意:

1. 题目要求的输出格式

2. 仔细想想每一条语句对上面的变量是否会造成影响。

3. 输出的时候多测试,随机数测试也是有必要的,必须把所有可能情况都测一遍再交。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#define ll long long
using namespace std;
#define maxn 1220
#define rep(i,a,b) for(int i=(a);i<(b);i++)
char s1[maxn],s2[maxn];
char ss1[maxn],ss2[maxn];

int ans1[maxn*10];
int ans2[maxn*10];
int t1=0;
int t2=0;

int main(){
    int t;
    cin>>t;
    for(int kk=0;kk<t;kk++){
        t1=t2=0;
        scanf("%s %s",s1,s2);
        strcpy(ss1,s1);
        strcpy(ss2,s2);

        int l1=strlen(ss1);
        int l2=strlen(ss2);
       // cout<<l1<<"  "<<l2<<endl;

        int len1=strlen(s1);
        int len2=strlen(s2);

        if(len1<len2){
            swap(s1,s2);
        }
        len1=strlen(s1);
        len2=strlen(s2);

        int i1,i2;
        i1=len1-1,i2=len2-1;
        int jin=0;

        while(i1>=0&&i2>=0){
            int x1=s1[i1]-‘0‘;
            int x2=s2[i2]-‘0‘;
            ans1[t1++]=(x1+x2+jin)%10;
            jin=(x1+x2+jin)/10;

            i1--,i2--;
        }
        while(i1>=0){
            int x1=s1[i1--]-‘0‘;
            ans1[t1++]=(x1+jin)%10;
            jin=(x1+jin)/10;
        }
        if(jin)
            ans1[t1++]=jin;

        for(int i=t1-1;i>=0;i--){
            ans2[t2++]=ans1[i];
        }
        printf("Case %d:\n",kk+1);
        rep(o,0,l1)
            printf("%c",ss1[o]);
        cout<<" + ";
        rep(o,0,l2)
            printf("%c",ss2[o]);
        cout<<" = ";
        rep(i,0,t2)
            printf("%d",ans2[i]);
        puts("");
        if(kk!=t-1)
            puts("");
    }
    return 0;
}

  

原文地址:https://www.cnblogs.com/pipitongkw1/p/10632507.html

时间: 2024-10-20 13:41:06

C - A + B Problem II HDU - 1002的相关文章

Train Problem II HDU 1023 卡特兰数

Problem Description As we all know the Train Problem I, the boss of the Ignatius Train Station want to know if all the trains come in strict-increasing order, how many orders that all the trains can get out of the railway. Input The input contains se

HDU 1002 A + B Problem II(两个大数相加)

详细题目点击:http://acm.hdu.edu.cn/showproblem.php?pid=1002 Problem Description I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B. Input The first line of the input contains an integer T(1<=T<=20)

抓起根本(二)(hdu 4554 叛逆的小明 hdu 1002 A + B Problem II,数字的转化(反转),大数的加法......)

数字的反转: 就是将数字倒着存下来而已.(*^__^*) 嘻嘻…… 大致思路:将数字一位一位取出来,存在一个数组里面,然后再将其变成数字,输出. 详见代码. 1 while (a) //将每位数字取出来,取完为止 2 { 3 num1[i]=a%10; //将每一个各位取出存在数组里面,实现了将数字反转 4 i++; //数组的变化 5 a/=10; 6 } 趁热打铁 例题:hdu 4554 叛逆的小明 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid

HDU 1002 A - A + B Problem II (大数问题)

原题代号:HDU 1002 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1002 原题描述: Problem Description I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B. Input The first line of the input contains an int

HDU 1002 A + B Problem II(大整数相加)

A + B Problem II Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B. Input The first line of the input c

HDU 1002 B - A + B Problem II

A + B Problem II Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 372150     Accepted Submission(s): 72520 I have a very simple problem for you. Given two integers A and B, your job is to calcul

HDOJ 1002 A + B Problem II (Big Numbers Addition)

题目链接在此?http://acm.hdu.edu.cn/showproblem.php?pid=1002 这题也比较简单,只需要开三个长度为1000的char数组来分别储存a.b.ans,再利用我们加法的算法,先向右对齐再相加.注意一下进位时的特殊情况就好了. 不过笔者的代码写好后提交上去,两次Presentation Error,然后才发现只是最后多输出一个空行的问题  =.= Orz /**  * HDOJ 1002 A + B Problem II  * Big Numbers Addi

杭电 1002 A + B Problem II(大数处理)

A + B Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 209179    Accepted Submission(s): 40226 Problem Description I have a very simple problem for you. Given two integers A and B, yo

HDU:A + B Problem II

A + B Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 204863    Accepted Submission(s): 39378 Problem Description I have a very simple problem for you. Given two integers A and B, yo