作为最简单的高精度加法,要注意的是如下几点,

第一,因为是数位达到上百位的大数,所以只能用字符串数组来存贮。

第二,为了方便之后的相加操作,应该把字符串数组逆序转化为一个整型数组。

第三,在控制进位的时候,应该用一个工具变量,假设为h,则h初始值为0.之后在循环体里h是等于对应位的两个数相加之后/10,使得下一次循环时,高位可以进位。

第四,因为已经把原来读取的大数用字符数组读入后又逆序复制到一个新的整型数组里,所以此时下标小的保存的就是低位,这个时候再控制循环变量从低位一直加到高位,
多余的位都是0,但是没关系,继续相加(如果不这样的话,最大的那一位可能会出现无法进位的情况,即读入的数是多少位,最后结果就是多少
位,显然是错误的)。。。

第五。在相加的时候,可以不必一位一位相加,可以4位4位相加,即万进制加法,其实万进制是很方便的一个方法,之后还会用万进制乘法,在节省时间方面是很有用的。
下面是AC代码,还是采用一位一位相加,采用的基本上是上述思想
注意此题输入结束标志:输入的那一行有且只有一个0结束,不是输入的第一个字符为0为结束标志,我原先判断结束的标志是当输入的一行字符串中第一个为0时程序结束,为此WA了好几次,在不是结束行中有可能会出现第一个字符为0.故判断结束时不能单单判断第一个字符是否为0,而应进一步说明那一行只有一个字符并接为0;

#include <iostream>
#include<cstring>
#include <cstdio>
using namespace std;
int a[]={},b[]={};
char str[];
int main()
{
int len1;
int j,i;
gets(str);
int len=strlen(str);
for(i=,j=len-;j>=;j--,i++)
b[i]=str[j]-'';
while()
{
if(str[]==''&&str[]=='\0')//注意判断结束的标志
break;
int h=;
int m; for(j=;j<len;j++)
{
m=a[j]+b[j]+h;
a[j]=m%;
h=m/;
}
while(h)
{
a[j]=h%;
len++;
h/=;
}
gets(str);
len1=strlen(str);
for(i=,j=len1-;j>=;j--,i++)
b[i]=str[j]-'';
}
int p;
for(p=len-;p>=;p--)
cout<<a[p];
cout<<endl;
return ;
}
#include<iostream>
#include<cstring>
using namespace std;
#define N 110
int main()
{
int sum[N]={};
char str[N];
while(cin>>str)
{
if(str[]==''&&str[]=='\0')//注意判断结束的标志
break;
int num[N]={};
int len=strlen(str);
for(int i=;i<len;i++)
num[i]=str[len--i]-'';
for(int i=;i<N;i++)
{
sum[i]+=num[i];
if(sum[i]>)
{
sum[i]-=;
sum[i+]+=;
}
//sum[i+1]+=(sum[i]+num[i])/10;
//sum[i]=(sum[i]+num[i])%10;
}
}
int k=N-;
while(sum[k]==) k--;
if(k<)
cout<<;
else
for(;k>=;k--)
cout<<sum[k];
cout<<endl;
return ;
}

C++代码 :

WA 好几次  没有这条语句的后半部分 if(str[0]=='0'&&str[1]=='\0'),即str[1]=='\0' 一直WA 很苦闷  别的OJ 能通过去的   附代码(AC)

Integer Inquiry -TJU1112的更多相关文章

  1. hdu acm-1047 Integer Inquiry(大数相加)

    Integer Inquiry Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  2. Integer Inquiry【大数的加法举例】

    Integer Inquiry Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 27730   Accepted: 10764 ...

  3. 424 - Integer Inquiry

     Integer Inquiry  One of the first users of BIT's new supercomputer was Chip Diller. He extended his ...

  4. hdu1047 Integer Inquiry

    /* Integer Inquiry Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...

  5. Integer Inquiry

    Integer Inquiry Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Sub ...

  6. hdu 1047 Integer Inquiry

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1047 Integer Inquiry Description One of the first use ...

  7. UVa 424 Integer Inquiry

    之前杭电上也做过a + b的高精度的题,不过这道题的区别是有多组数据. 之前做的时候开了3个字符数组a,b,c,在计算的时候还要比较a,b长度,短的那个还要加'0',还设置了一个add来存放进位. 现 ...

  8. Poj 1503 Integer Inquiry

    1.链接地址: http://poj.org/problem?id=1503 2.题目: Integer Inquiry Time Limit: 1000MS   Memory Limit: 1000 ...

  9. hdoj 1047 Integer Inquiry

    Integer Inquiry Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

随机推荐

  1. The REST Objection

    HTTP 1.1 Standard http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

  2. ios常见细节问题-删掉main.storyboard程序启动屏幕变黑-崩溃

    删掉程序默认的main.storyboard文件后,程序启动崩溃 如图所示.原因是删掉main.storyboard文件后没有在info.plist文件里面设置 删掉main.storyboard后程 ...

  3. throw 语句

    我们也可以写代码来抛出异常,抛出异常的语句时throw,其格式如下: throw 异常类的对象名 用throw抛出异常,一般放在方法内部.一个程序可以有多个throw.throw语句执行时,其后面的代 ...

  4. SQL SERVER2005 的三种复制类型概述

    一.事务复制 事务性复制通常从发布数据库对象和数据的快照开始.创建了初始快照后,接着在发布服务器上所做的数据更改和架构修改通常在修改发生时(几乎实时)便传递给订阅服务器.数据更改将按照其在发布服务器上 ...

  5. PAT 解题报告 1048. Find Coins (25)

    1048. Find Coins (25) Eva loves to collect coins from all over the universe, including some other pl ...

  6. SQL Server 2008中的Service SID 介绍

    [介绍] 我们打开SQL Server 2008 Management Studio, 会发现有如下几个登录: NT SERVICE\ClusSvc, NT SERVICE\MSSQL$KATMAI和 ...

  7. Lintcode: Single Number III

    Given 2*n + 2 numbers, every numbers occurs twice except two, find them. Example Given [1,2,2,3,4,4, ...

  8. acm算法模板(3)

    位  运  算 程序中的所有数在计算机内存中都是以二进制的形式储存的.位运算说穿了,就是直接对整数在内存中的二进制位进行操作.运位算包括位逻辑运算和移位运算,位逻辑运算能够方便地设置或屏蔽内存中某个字 ...

  9. [转]Chrome 控制台console的用法

    Chrome 控制台console的用法 下面我们来看看console里面具体提供了哪些方法可以供我们平时调试时使用. 目前控制台方法和属性有: ["$$", "$x&q ...

  10. Eclipse安装Ruby插件应该注意的几点

    http://www.aptana.com/products/studio3/success_plugin.html Installing via Eclipse Please copy the fo ...