Codeup小白掉坑经验总结之 a+b id=1949
发布日期:2021-07-01 03:06:35 浏览次数:2 分类:技术文章

本文共 1717 字,大约阅读时间需要 5 分钟。

Codeup小白掉坑经验总结之 a+b id=1949

  • 题目如下
    1949: 时间限制: 1 Sec 内存限制: 32 MB
    题目描述
    实现一个加法器,使其能够输出a+b的值。

输入

输入包括两个数a和b,其中a和b的位数不超过1000位。

输出

可能有多组测试数据,对于每组数据,
输出a+b的值。

样例输入

6 8
2000000000 30000000000000000000
样例输出
14
30000000002000000000

题目真的不难。。而我卡的地方是。。。数组定义的是1000,而测试数据刚好溢出,所以还是不能按照题目要求的定义数组大小,一定要定义大一点!!

实现的代码如下:

#include 
#include
struct bign{ int d[1010]; int len; bool flag; bign() { memset(d,0,sizeof(d)); len=0; flag=0; }};bign change(char s[]){ bign a; a.len=strlen(s); for(int i=0;i
='0'&&s[0]<='9') { a.d[a.len-1]=s[0]-'0'; } else { a.flag=1; a.len--; } return a;}bign add(bign a,bign b){ bign c; c.flag=a.flag; int carry=0; for(int i=0;i
=2) { c.len--; } return c;}bign sub(bign a,bign b){
bign c; int carry=0; for(int i=0;i
=b.d[i]) c.d[c.len++]=a.d[i]-b.d[i]; else { a.d[i+1]--; c.d[c.len++]=a.d[i]+10-b.d[i]; } } while(c.d[c.len-1]==0&&c.len>=2) { c.len--; } return c;}int compare(bign a,bign b){ if(a.len>b.len) return 1; else if(a.len
=0;i--) { if(a.d[i]>b.d[i]) return 1; else if(a.d[i]
=0;i--) { printf("%d",c.d[i]); } printf("\n"); } return 0;}

代码有点长,是因为我多实现了一些功能。。。考虑了a+b可能a或者b是负数的情况,所以。。。如果不需要那就用下面的~

#include 
#include
struct bign{ int d[1010]; int len; bign() { memset(d,0,sizeof(d)); len=0; }};bign change(char s[]){ bign a; a.len=strlen(s); for(int i=0;i
=0;i--) { printf("%d",c.d[i]); } printf("\n"); } return 0;}

简单的题目就不多赘述了,主要是用做备份,万一。。。服务器数据丢了,至少还有些知识备忘录能看看~

就这样啦╭(●`∀´●)╯╰(●’◡’●)╮

转载地址:https://meteorrain.blog.csdn.net/article/details/79145975 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Codeup小白掉坑经验总结之 字符串处理 id=1983(此题未解决!因题意不明,不知如何解决。。)
下一篇:算法笔记4.5.2二分法拓展思考题——求多边形组成的凸边形的外接圆的最大半径

发表评论

最新留言

很好
[***.229.124.182]2024年04月22日 15时42分10秒