大数相加(类似杭电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 - 抱歉 (拓扑学:多面体欧拉定理引申)
呕,大一下学期的第一周结束啦,一周过的挺快也挺多出乎意料的事情的~ 随之而来各种各样的任务也来了,嘛毕竟是大学嘛,有点上进心的人多多少少都会接到不少任务的,忙也正常啦~端正心态 开心面对就好啦~ 今天 ...
随机推荐
- wamp版本升级小问题记录
在升级wamp版本时遇到的一些小问题,特此记录 在安装完成之后,修改了Apache根目录,可以正常访问.但是发现 httpd-vhosts.conf追加配置的无法访问,逐步检查,有以下问题 1.Inc ...
- linkin大话数据结构--数组
数组概述:如何正确理解数组?数组也是一种类型 数组是多个相同类型数据的组合,实现对这些数据的统一管理.数组属引用类型,数组型数据是对象(Object),数组中的每个元素相当于该对象的成员变量数组中的元 ...
- SVN中服务器地址变更
SVN中服务器地址变更后不需要重新导项目,只要修改下SVN的服务器地址,更新一下即可.有两种方法: 方法一:通过MyEclipse中SVN插件 1.选择window→show view→other→S ...
- 在 ios 中的日期格式
var d="2017-1-1" ; new Date(d) //生成一个日期对象 这样写在 Android 中没有问题,但是在 ios 中,d 的格式不对,应该设为 2017- ...
- C# TCP 了解
参考:http://www.jb51.net/article/118682.htm 一: TCP 粘包原理:发送方发送若干数据给接收方时粘成一包.从接收缓冲区看,后一包的头紧接前一包的数据的尾. 发送 ...
- FastDFS角色配置参数思维导图
- Java在已存在的pdf文件中生成文字和图片--基础
自我总结,有什么不足之处请告知,感激不尽!下一次总结pdf模板映射生成报表(应对多变的pdf报表需求,数据提供和报表生成解耦). 目的:在给定的pdf模板上生成报表,就需要知道最基本的操作:文字添加, ...
- JavaScript中的类继承
JavaScript是一个无class的面向对象语言,它使用原型继承而非类继承.这会让那些使用传统面向对象语言如C++和Java的程序员们感到困惑.正如我们所看到的,JavaScript的原型继承比类 ...
- [DeeplearningAI笔记]神经网络与深度学习4.深度神经网络
觉得有用的话,欢迎一起讨论相互学习~Follow Me 4.2 深层神经网络中的前向传播 4.3 核对矩阵的维数 经验方法论 对于神经网络想增加得到没有bug的程序的概率的方法:需要仔细的思考矩阵的维 ...
- webpack最简示例
安装webapck webpack依赖node环境,所以在此之前要保证系统中有node环境. 打开cmd控制台 $ npm install webpack -g 全局安装webpack 配置模块 we ...