高精度加法
来源:互联网 发布:纬德软件下载 编辑:程序博客网 时间:2024/06/05 21:59
在NOI和NOIP的赛场上,int float long long char 帮助我们拿下一题又一题,但是,如果有一天,连long long 和 int64都不能满足题目的要求,我们又怎么能让可爱的分数就这样离我们远去呢?我们需要动脑筋,把学过的东西综合起来,活学活用。
高精度,就是用数组来作小学的竖式,考虑进位,转换等一系列要素后输出。数组有多少元素,答案就能有多少位。
#include <stdio.h>#include <math.h>#include <string.h>char a[1001],b[1001];char number1[1001],number2[1001];int sum[1005]={0};int main(){ int bbb; scanf("%s%s",a,b); int lena=strlen(a),lenb=strlen(b),big; int x=0; int i,j; if(lena>=lenb)big=lena; else big=lenb; for(i=0;i<=big+1;i++){ number1[i]='0';//初始化 number2[i]='0';//初始化 } for(i=lena,j=0;i>=1;i--) number1[i]=a[j++]; for(i=lenb,j=0;i>=1;i--) number2[i]=b[j++]; //////整个高精度加法的精髓////// for(i=1;i<=big+1;i++){ bbb=number1[i]+number2[i]-'0'-'0';//转换环节,很重要 sum[i]=bbb; sum[i]+=x; if(sum[i]>=10){ x=1; sum[i]-=10; } else x=0; } if(sum[big+1]>0)big++; //////整个高精度加法的精髓////// for(i=big;i>=1;i--)//逆序输出 printf("%d",sum[i]); return 0;}
我们定义了a和b两个字符数组,用于输入,之后的number1和number2是用来转换与计算的,直接使用a,b进行运算会导致错误
先把数组倒置,各个元素转换相加后,再逆序输出,高精度加法就完成了。
0 0
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度 加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 启动电脑时出现Disk error
- Ubuntu server搭建Java web服务器
- linux的top命令详解以及Linux的free命令详解
- 搜集来的基础性快速排序法--新手向
- Start+协程+While循环
- 高精度加法
- OpenCV I_06绘图基础
- Shader Forge
- GPIO简介
- No515. Find Largest Value in Each Tree Row
- 选择语句switch
- 在线支付案例--使用易宝第三方支付公司(未实现,待续)
- C++中的OOP
- Yaf学习之Bootstrap