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

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

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

第三,在控制进位的时候,应该用一个工具变量,假设为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. HTML 5 Web 存储-localStorage

    在客户端存储数据 HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 之前, ...

  2. windows安装pip 和easy_install

    先安装windows版的easy_install 下载 然后下载pip  ,python setup.py install 安装好的 pip和easy_install通常在 python目录的 Scr ...

  3. spring mvc 的Controller类默认Scope是单例(singleton)的

    使用Spring MVC有一段时间了,之前一直使用Struts2,在struts2中action都是原型(prototype)的, 说是因为线程安全问题,对于Spring MVC中bean默认都是(s ...

  4. 操作系统:进程管理和IO控制

    一.进程管理 进程管理包括进程控制,进程调度,进程同步与通信,死锁控制四个内容. (一)进程控制 进程是操作系统中运行的基本单位,包括程序段,数据段和进程控制段.操作系统通过进程控制块(PCB)管理进 ...

  5. Java数据库操作大全

    1.提取单条记录 //import java.sql.*; Connection con=null; Statement stmt=null; ResultSet %%6=null; try { Cl ...

  6. notpad++安装python插件

    1.安装python并添加到环境变量 2.在notpad++ 运行工具下点击运行,输入如下命令: cmd /k python "$(FULL_CURRENT_PATH)" & ...

  7. 【Origin】羡旁人

    -道行至一桥畔,微风轻抚,观河岸杨柳柳枝空舞,看满路车辆畅行无阻,虽羡,然各有归途. 小河岸,棵棵杨柳,柳枝随风摆; 大路上,盏盏绿灯,一路往北开. 横批: 可惜不是我 -作于二零一六年三月二十二日

  8. poj: 1004

    简单题 #include <iostream> #include <stdio.h> #include <string.h> #include <stack& ...

  9. CCF真题之窗口

    201403-2 问题描述 在某图形操作系统中,有 N 个窗口,每个窗口都是一个两边与坐标轴分别平行的矩形区域.窗口的边界上的点也属于该窗口.窗口之间有层次的区别,在多于一个窗口重叠的区域里,只会显示 ...

  10. Linux下用SCP无需输入密码传输文件

    在Linux环境下,两台主机之间传输文件一般使用scp命令,通常用scp命令通过ssh获取对方linux主机文件的时候都需要输入密码确认. 不过通过建立信任关系,可以实现不输入密码. 这里假设A的IP ...