题目1198:a+b-----没有AC掉,,,,,借鉴了别人的一份

WA:在屏幕上可以出现正确的结果,不知为何不能AC

#include<stdio.h>
#include<stdlib.h>
#include<cstring>
int main()
{
     char str1[1001],str2[1001];

     while(scanf("%s %s",str1,str2)!=EOF)
     {
       int a[1001],a1=0,b[1001],b1=0,c[1001],c1=0;
       int i,j;
       for (i=0;str1[i]!=‘\0‘;i++)
          a[a1++]=str1[i]-‘0‘;
          a[a1]=‘\0‘;
       for(j=0;str2[j]!=‘\0‘;j++)
          b[b1++]=str2[j]-‘0‘;
          b[b1]=‘\0‘;
       int t=0;//代表进位
       for (i=a1-1,j=b1-1;i>=0&&j>=0;i--,j--)
           {
                 c[c1++]=(a[i]+b[j]+t)%10;
                 t=(a[i]+b[j]+t)/10;
           }
     int p;
       if (i>=0) //证明a数组有剩余
       {
           p=t;
           for (i=i;i>=0;i--)
             {
                 c[c1++]=(a[i]+p)%10;
                 p=(a[i]+p)/10;
             }
       }
       if (j>=0)  //证明b数组有剩余
       {
         p=t;
           for (j=j;j>=0;j--)
             {
                 c[c1++]=(b[j]+p)%10;
                 p=(b[j]+p)/10;
             }
       }
       c[c1++]=p;
       c[c1]=‘\0‘;
       int k=c1-1;
       while(c[k]==0) k--;
       for (k=k;k>=0;k--)
         printf("%d",c[k]);
       printf("\n");

     }
     return 0;

}

大神的AC代码:

/*
    时间:2014.1.16.22.00
    目的:大数求和
*/
#include <stdio.h>
#include <string.h>

char a[1001],b[1001];
int c[1001];

int main()
{
    int carr,len_a,len_b,i,j,temp,len;
    while(~scanf("%s %s", a, b))
    {
        carr = len =0;
        len_a = strlen(a);
        len_b = strlen(b);
        for(i = len_a - 1,j = len_b - 1;i >= 0 && j >= 0;i--, --j)
        {
            temp = a[i] - ‘0‘ + b[j] - ‘0‘ + carr;
            c[len] = temp % 10;
            carr = temp / 10;
            len++;
        }
        while(i >= 0)
        {
            temp = carr + a[i] - ‘0‘;
            c[len] = temp % 10;
            carr = temp / 10;
            i--;
            len++;
        }
    //    carr&&(c[len] = carr)&&(++len);此处我重复了一次 导致WA  因为当输出8 4 时  输出为112,多输出了一个1
        while(j >= 0)
        {
            temp = carr + b[j] - ‘0‘;
            c[len] = temp % 10;
            carr = temp / 10;
            j--;
            len++;
        }
        carr&&(c[len] = carr)&&(++len);
        for(--len;len>=0;--len)
        printf("%d", c[len]);
        printf("\n");
    }
    return 0;
}
/*
输出结果:
---------------------
2 6                                            思路: 1.由于数很大,必须用字符串存取
8                                                   2.注意a,b串是从大高位到低位存储,故数字的最低位在串的最高位
10000000000000000000 100000000000000000000000000000003.c串的输出时高位到低位的输出
10000000000010000000000000000000
---------------------
*/ 
时间: 2024-10-10 05:07:19

题目1198:a+b-----没有AC掉,,,,,借鉴了别人的一份的相关文章

题目1013:开门人和关门人----没有AC掉

首先,承认这道没有太大的难度,但是有好多值得学习的地方: 我的WA:正确的结果,但是runtime error 的问题; #include<stdio.h> #include <stdlib.h> #include<string.h> int main() { int N,M; scanf("%d",&N); if (N==0) return 0; while(N--) { scanf("%d",&M); char

题目1198:a+b(大数相加)

题目描述: 实现一个加法器,使其能够输出a+b的值. 输入: 输入包括两个数a和b,其中a和b的位数不超过1000位. 输出: 可能有多组测试数据,对于每组数据,输出a+b的值. 样例输入: 2 6 10000000000000000000 10000000000000000000000000000000 样例输出: 8 10000000000010000000000000000000 Code: #include <iostream> #include <stdio.h> #in

POJ 题目1204 Word Puzzles(AC自动机,多个方向查询)

Word Puzzles Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 10244   Accepted: 3864   Special Judge Description Word puzzles are usually simple and very entertaining for all ages. They are so entertaining that Pizza-Hut company started u

九度OJ—题目1198:a+b(高精度计算)

题目描述: 实现一个加法器,使其能够输出a+b的值. 输入: 输入包括两个数a和b,其中a和b的位数不超过1000位. 输出: 可能有多组测试数据,对于每组数据, 输出a+b的值. 样例输入: 2 6 10000000000000000000 10000000000000000000000000000000 样例输出: 8 10000000000010000000000000000000 来源: 2010年华中科技大学计算机研究生机试真题 答疑: 解题遇到问题?分享解题心得?讨论本题请访问:ht

题目1198:a+b

题目描述: 实现一个加法器,使其能够输出a+b的值. 输入: 输入包括两个数a和b,其中a和b的位数不超过1000位. 输出: 可能有多组测试数据,对于每组数据,输出a+b的值. 样例输入: 2 6 10000000000000000000 10000000000000000000000000000000 样例输出: 8 10000000000010000000000000000000 1 import java.util.Scanner; 2 3 public class Main{ 4 pu

HDOJ 题目2896 病毒侵袭(AC自动机)

病毒侵袭 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 15352    Accepted Submission(s): 3901 Problem Description 当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻....在这样的时刻,人们却异常兴奋--我们能在有生之年看到500年一遇的世界奇观,那是多么幸福的事

HDOJ 题目2222 Keywords Search(AC自动机)

Keywords Search Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 38611    Accepted Submission(s): 12437 Problem Description In the modern time, Search engine came into the life of everybody like

BZOJ 题目3172: [Tjoi2013]单词(AC自动机||AC自动机+fail树||后缀数组暴力||后缀数组+RMQ+二分等五种姿势水过)

3172: [Tjoi2013]单词 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 1890  Solved: 877 [Submit][Status][Discuss] Description 某人读论文,一篇论文是由许多单词组成.但他发现一个单词会在论文中出现很多次,现在想知道每个单词分别在论文中出现多少次. Input 第一个一个整数N,表示有多少个单词,接下来N行每行一个单词.每个单词由小写字母组成,N<=200,单词长度不超过10^6

九度OJ:题目1476:平方因子 AC

1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<math.h> 4 bool judge(int a) 5 { 6 int sqr=sqrt(a*1.0); 7 for(int i=2 ; i<=sqr+1 ; ++i) 8 { 9 int tmp=i*i; 10 if(a%tmp==0) 11 return 1; 12 } 13 return 0; 14 } 15 16 int main(int argc,