大数相加(类似杭电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 - 抱歉 (拓扑学:多面体欧拉定理引申)
呕,大一下学期的第一周结束啦,一周过的挺快也挺多出乎意料的事情的~ 随之而来各种各样的任务也来了,嘛毕竟是大学嘛,有点上进心的人多多少少都会接到不少任务的,忙也正常啦~端正心态 开心面对就好啦~ 今天 ...
随机推荐
- 数据库分表之Mybatis+Mysql实践(含部分关键代码)
2018年01月31日 随着我们系统用户数量的日增,业务数据处于一个爆发前,增长的数据量已经给我们的系统造成了很大的不确定.在上个周末用户量较多,并发较大的情况下,读写频繁的验证码表,数据量 ...
- Oracle多行记录合并的几种方法
今天正好遇到需要做这个功能,顺手搜了一下网络,把几种方法都列出来,方便以后参考. 1 什么是合并多行字符串(连接字符串)呢,例如: SQL> desc test; Name Type Nulla ...
- MoonLight可视化订单需求区域分析系统前端
MoonLight可视化订单需求区域分析系统实现功能: 在现实生活中,计算机和互联网迅速发展,人们越来越趋向于网络,于是我们就有了各种各样的系统,来帮助我们更好地生活.比如对于打车来说,我们也可以通过 ...
- 根据URL下载图片至客户端、服务器实例
1.保存至服务器 根据路径保存至项目所在服务器上. String imgUrl="";//图片地址 try { // 构造URL URL url = new URL(imgUrl) ...
- Curl是什么,原文地址:http://www.phpchina.com/portal.php?mod=view&aid=40161
Curl是什么PHP supports libcurl, a library created by Daniel Stenberg, that allows you to connect and co ...
- redis数据类型-字符串类型
Redis数据类型 字符串类型 字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据.你可以用其存储用户的邮箱.JSON化的对象甚至是一张图片.一个字符串类型键允许存储的 ...
- 【JDK1.8】JDK1.8集合源码阅读——Set汇总
一.前言 这一篇里,我将对HashSet.LinkedHashSet.TreeSet进行汇总分析,并不打算一一进行详细介绍,因为JDK对Set的实现进行了取巧.我们都知道Set不允许出现相同的对象,而 ...
- Jmeter之http性能测试实战 非GUI模式压测 NON-GUI模式 结果解析TPS——干货(十一)
性能测试计划 性能测试用例 录制脚本 性能测试结果 性能测试报告 性能测试监控报告 准备工作 从脚本已录制成功之后开始进行压测 安装Jmeter拓展插件 查看 Transactions per Sec ...
- canvas-海底气泡(面向对象编程)
需求:自动生成若干气泡,从海底往上浮: 1.基本的HTML结构: <!DOCTYPE html> <html> <head lang="en"> ...
- 分组密码的工作模式--wiki
密码学中,块密码的工作模式允许使用同一个块密码密钥对多于一块的数据进行加密,并保证其安全性.[1][2] 块密码自身只能加密长度等于密码块长度的单块数据,若要加密变长数据,则数据必须先被划分为一些单独 ...