大数相加(类似杭电acm1002)
/*输入两个非常大的整数(完全超出了int、long的表示范围),这个整数的长度可能超过100位,计算并输出这两个数相加的结果。*/
//自己用题目所给的案例测试,输出是正确的,也能输出正确的结果,不知道为什么提交以后一直wa,(如果有人测试了我代码以后知道我wa的原因请评论中提出哦,十分感谢),但是算法思想应该是对的,也参考了其他人的博客,(http://blog.csdn.net/hackbuteer1/article/details/6667026的大数相加的题目)
我的代码如下:
//大数相加
#include<stdio.h>
#include<string.h>
#define N 1010
char a[N], b[N], c[N];
int sum[N];
int main()
{
int len1, len2, m, k, temp, len;
int i, j;
int test;
while (scanf("%d", &test) != EOF)
{
for (int index = 0; index < test; index++)
{
scanf("%s%s", a, b);
len1 = strlen(a);len2 = strlen(b);
if (len1 < len2)//确保字符串a不短于字符串b
{
strcpy(c, a);strcpy(a, b);strcpy(b, c);
m = len1;len1 = len2;len2 = m;
}
k = m = 0;temp = 0;len = 0;
for (i = len1 - 1, j = len2 - 1; i >= 0; i--, j--)//从低位开始相加,模拟手工运算,逐位相加
{
if (j < 0)
{
temp = a[i] - '0' + m;
}
else
{
temp = a[i] - '0' + b[j] - '0' + m;
}
sum[k++] = temp % 10;
m = temp / 10;//进位
}
len = k;//len用来记录sum的长度
if (m > 0)//如果加完还有进位m,则加在sum的高位
{
len++;
sum[len - 1] = m;
}
int cnt=index+1;
printf("Case %d:\n", cnt);
printf("%s + %s = ", a, b);
//从低位开始输出
for (i = len - 1; i >= 0; i--)
{
printf("%d", sum[i]);
}
if (index<test)
printf("\n\n");
else
printf("\n");
/*if (m>0)
{
//printf("%d", m);
sum[k] = m;
printf("Case %d:\n", ++index);
printf("%s + %s = ", a, b);
for (i = k ; i >= 0; i--)
{
printf("%d", sum[i]);
}
}
else
{
printf("Case %d:\n", ++index);
printf("%s + %s = ", a, b);
for (i = k-1; i >= 0; i--)
{
printf("%d", sum[i]);
}
}
printf("\n");
*/
}
}
return 0;
}
大数相加(类似杭电acm1002)的更多相关文章
- 大数相加-----杭电acm1002
#include<stdio.h> #include<string.h> int main() { ], ch2[]; ], num2[]; ; scanf("%d& ...
- 杭电ACM1002
原题:http://acm.hdu.edu.cn/showproblem.php?pid=1002 #include <stdio.h> #include <string.h> ...
- Help Johnny-(类似杭电acm3568题)
Help Johnny(类似杭电3568题) Description Poor Johnny is so busy this term. His tutor threw lots of hard pr ...
- 杭电ACM(1002) -- A + B Problem II 大数相加 -提交通过
杭电ACM(1002)大数相加 A + B Problem II Problem DescriptionI have a very simple problem for you. Given two ...
- SCAU1143 多少个Fibonacci数--大菲波数【杭电-HDOJ-1715】--高精度加法--Fibonacci数---大数比较
/*******对读者说(哈哈如果有人看的话23333)哈哈大杰是华农的19级软件工程新手,才疏学浅但是秉着校科联的那句“主动才会有故事”还是大胆的做了一下建一个卑微博客的尝试,想法自己之后学到东西都 ...
- 杭电acm 1002 大数模板(一)
从杭电第一题开始A,发现做到1002就不会了,经过几天时间终于A出来了,顺便整理了一下关于大数的东西 其实这是刘汝佳老师在<算法竞赛 经典入门 第二版> 中所讲的模板,代码原封不动写上的, ...
- 杭电ACM分类
杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...
- 杭电ACM 1297 Children’s Queue
这道题是排序问题,可以用递归方法解决. 计算F(n): 一:当最后一个是男孩M时候,前面n-1个随便排出来,只要符合规则就可以,即是F(n-1): 二:当最后一个是女孩F时候,第n-1个肯定是女孩F, ...
- 『ACM C++』HDU杭电OJ | 1418 - 抱歉 (拓扑学:多面体欧拉定理引申)
呕,大一下学期的第一周结束啦,一周过的挺快也挺多出乎意料的事情的~ 随之而来各种各样的任务也来了,嘛毕竟是大学嘛,有点上进心的人多多少少都会接到不少任务的,忙也正常啦~端正心态 开心面对就好啦~ 今天 ...
随机推荐
- linux下安装python3
不建议卸载python2 可能会导致系统内其他软件无法使用 1.下载 wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0a1.tar.x ...
- python_15_内置函数
有哪些内置函数? -- all() - 可迭代对象,全为真返回真 -- any() - ...
- scrapy_xpath
什么是xpath? 路径表达式 在xml和html中进行导航 包含标准函数库 遵循w3c标准 xpth节点关系是什么? 父节点 子节点 兄弟节点 先辈节点 后代节点 xpth语法 a ...
- OpenCv函数学习(一)
Intel Image Processing Library (IPL) typedef struct _IplImage { int nSize; /* IplImage大小 */ int ID; ...
- Runtime.addShutdownHook的用法
原文出处:http://kim-miao.iteye.com/blog/1662550.感谢作者的无私分享. 一.Runtime.addShutdownHook理解 在看别人的代码时,发现其中有这个方 ...
- Python简单爬虫Requests
首先添加库 附配环境变量:安装环境变量 cmd==> 输入指令: path=%path%;C:\Python(Python安装路径) 回车 python2.7版本可能没有pip的话可以先到www ...
- 添加FTP用户(vsftpd)
1.环境:ftp为vsftp. 用户名为test.默认路径为/home/test 2.新建用户(当前是root用户) 运行命令:"useradd -d /home/test test&quo ...
- Git分支高级管理[四]
标签(linux): git 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 切换分支 git checkout 撤销对文件的修改 git checkout -- ...
- Lucene:基于Java的全文检索引擎简介
Lucene:基于Java的全文检索引擎简介 Lucene是一个基于Java的全文索引工具包. 基于Java的全文索引/检索引擎--Lucene Lucene不是一个完整的全文索引应用,而是是一个用J ...
- Hadoop-2.6.5安装
简介 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储. Hadoop实现了一个分布式文 ...