ACM1002:A + B Problem II
--------------------------------------------------------------------------------------------------------------------------
//高精度加法,注意格式
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<memory.h>
#define SIZE 1005 int main()
{
int i, n;
int j, k, m;
int index;
int lengthA, lengthB;
char a[SIZE];
char b[SIZE]; int ans[SIZE];
int carryBit; //进位
//freopen("F:\\input.txt","r",stdin);
scanf("%d", &n);
for(i = 0; i < n; i++)
{
scanf("%s%s", a, b); memset(ans, 0, sizeof(ans));
index = 0;
carryBit = 0;
lengthA = strlen(a);
lengthB = strlen(b); lengthA--;
lengthB--;
while ((lengthA >= 0) && (lengthB >= 0))
{
//将char转换为int,并计算和,如果ans大于10,则carryBit为1,否则为0
ans[index] = (a[lengthA] - '0') + (b[lengthB] - '0') + carryBit;
if (ans[index] >= 10)
{
carryBit = ans[index] / 10;
ans[index] %= 10;
}
else
carryBit = 0;
index++;
lengthA--;
lengthB--;
}
//如果A的长度大于B,则将A与carryBit相加
while (lengthA >= 0)
{
ans[index] = (a[lengthA] - '0') + carryBit;
if (ans[index] >= 10)
{
carryBit = ans[index] / 10;
ans[index] %= 10;
}
else
carryBit = 0;
index++;
lengthA--;
}
//如果B的长度大于A,则将B与carryBit相加
while (lengthB >= 0)
{
ans[index] = (b[lengthB] - '0') + carryBit;
if (ans[index] >= 10)
{
carryBit = ans[index] / 10;
ans[index] %= 10;
}
else
carryBit = 0;
index++;
lengthB--;
} if (carryBit != 0)
{
ans[index]++;
index++;
} //去掉多余的零
while (ans[index] == 0)
index--;
printf("Case %d:\n", i + 1);
printf("%s + %s = ", a, b);
//两个零字符串相加输出为0
if (index == -1)
printf("0");
else
{
for (m = index; m >= 0; m--)
printf("%d", ans[m]);
}
printf("\n");
if (i != n - 1)
printf("\n");
}
//freopen("con", "r", stdin);
//system("pause");
return 0;
}
ACM1002:A + B Problem II的更多相关文章
- HDU 1002:A + B Problem II(大数相加)
A + B Problem II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- A + B Problem II
之前总是在查阅别人的文档,看着其他人的博客,自己心里总有一份冲动,想记录一下自己学习的经历.学习算法有一段时间了,于是想从算法开始自己的博客生涯O(∩_∩)O~~ 今天在网上看了一道大数相加(高精度) ...
- hduoj 1002 A + B Problem II
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1002 题目描述如下: A + B Problem II Time Limit: 2000/1000 M ...
- hdu1032 Train Problem II (卡特兰数)
题意: 给你一个数n,表示有n辆火车,编号从1到n,入站,问你有多少种出站的可能. (题于文末) 知识点: ps:百度百科的卡特兰数讲的不错,注意看其参考的博客. 卡特兰数(Catalan):前 ...
- nyoj 623 A*B Problem II(矩阵)
A*B Problem II 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 ACM的C++同学有好多作业要做,最头痛莫过于线性代数了,因为每次做到矩阵相乘的时候,大 ...
- HDU 1002 A + B Problem II
A + B Problem II Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16104 Accepted ...
- nyoj 103 A + B problem II
点击打开链接 A+B Problem II 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 I have a very simple problem for you. G ...
- Train Problem II(卡特兰数+大数乘除)
Train Problem II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDU 1002 A + B Problem II(大整数相加)
A + B Problem II Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u De ...
随机推荐
- JAVA环境变量安装
需配置的系统环境变量参数: JAVA_HOME:C:\Program Files\Java\jdk1.8.0_60 CLASS_PATH: ;%JAVA_HOME%\lib;%JAVA_HOME%\l ...
- 如何用SAP Cloud for Customer的手机App创建销售订单
第一次启动App,设置一个初始化的pin code: 输入C4C tenant的url,用户名和密码: 登录进系统后,找到Sales Order工作中心: 可以看到系统里很多已有的销售订单了.点击屏幕 ...
- 在windows平台上构建自己的PHP(仅适用于php5.2)
构建步骤 1, 安装vs2008 2, 安装windows sdk 6.1 3, 下载php 5.2源码,可以从此处获取Releases(先不要解压) 4, 下载bindlib_w32.zip,htt ...
- 洗牌算法shuffle
对这个问题的研究始于一次在群里看到朋友发的洗牌面试题.当时也不知道具体的解法如何,于是随口回了一句:每次从剩下的数字中随机一个.过后找相关资料了解了下,洗牌算法大致有3种,按发明时间先后顺序如下: 一 ...
- Intellij IDEA 代码中类非全路径显示
- 动量法应用NASA测试不同飞机机翼噪音
%matplotlib inline from mxnet import nd import numpy as np from mxnet import autograd,gluon,init,nd ...
- 视频(video)属性
Figure 3视频相关的属性: 属性 值 描述 muted muted 定义音频的初始状态,目前仅支持muted. crossorigin 空 定义当前视频是否是一个跨域的项目. me ...
- 利用来JS控制页面控件显示和隐藏有两种方法
利用来JS控制页面控件显示和隐藏有两种方法,两种方法分别利用HTML的style中的两个属性,两种方法的不同之处在于控件隐藏后是否还在页面上占空位. 方法一: 1 2 document.getEle ...
- usb入门学习
1.学习资源: usb org.http://www.beyondlogic.org/usbnutshell/usb3.shtml http://wenku.baidu.com/view/028231 ...
- .net 网站中如何动态播放音乐,页面如何播放音乐
向别人请教有好处也有坏处,好处是你可以相对比较快的知道要点,坏处就是你TM的发现你弄了那么久都是白弄. 昨天今天一直在找一个问题的解决方案,我的问题描述大概是这样子的:我用vs2012开发的.net网 ...