技术经验分享:hdoj1002解题报告(大数入门)

简介: 技术经验分享:hdoj1002解题报告(大数入门)

"

引言 : int最大能表示的数约在10^9,最大的long long也只能存储约在10^19范围内的数。那怎么进行大数的运算呢,拿起草稿纸,做一个加法运算,看看会有哪些步骤。

题解 :

用字符数组来存储大数,每一位当做一个字符,可以开多大的数组,就能计算多少位的数。

举个栗子,计算99999999999+1. 直接用int,答案显然是错的。用两个字符数组

s1 :

9 9 9 9 9 9 9 9 9 9 9 \0

s2 :

1 \0

再用字符数组s来存储两数之和,显然s最长为s1的长度加1。从最低位依次模拟加法,注意进位,注意字符0与数字0的区别,注意数组从0开始。

s:

1 0 0 0 0 0 0 0 0 0 \0

?1234567891011121314151617181920212223242526272829303132333435363738394//代码效果参考:https://v.youku.com/v_show/id_XNjQwMDM5NzI4MA==.html

0414243444546474849#include#include void Bignum_add(char s1,char s2,char *s){ int i,j,a,l1,l2,L,t; l1=strlen(s1); l2=strlen(s2); s【0】='0'; a=0; if(l1>l2) L=l1; else L=l2; s【L+1】='\0'; for(i=L;l1>0&&l2>0;i--) { a=(s1【--l1】-'0')+(s2【--l2】-'0')+a/10; s【i】=a%10+'0'; } while(l1){ a=(s1【--l1】-'0')+a/10; s【i--】=a%10+'0'; } while(l2){ a=(s2【--l2】-'0')+a/10; s【i--】=a%10+'0'; } s【i】=a/10+'0'; t=0; while(s【t】=='0'&&t printf(""\n""); } return 0;}
"
image.png
相关文章
|
2月前
acwing 1113 红与黑
acwing 1113 红与黑
14 0
ACM刷题之路(十九)二分+尺取 2019暑期集训 HDU6231 K-th Number
ACM刷题之路(十九)二分+尺取 2019暑期集训 HDU6231 K-th Number
|
机器学习/深度学习 C++
ACM刷题之路(十七)二分 2019暑期集训 POJ2785
ACM刷题之路(十七)二分 2019暑期集训 POJ2785
leetcode 315周赛 解题报告
leetcode 315周赛 解题报告
72 0
|
算法 C++ Python
【每日算法Day 82】面试经典题:求第K大数,我写了11种实现,不来看看吗?
【每日算法Day 82】面试经典题:求第K大数,我写了11种实现,不来看看吗?
108 0
【蓝桥杯集训·每日一题】AcWing 3382. 整数拆分
文章目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 三、知识风暴 背包DP
91 0
|
存储 人工智能 算法
【蓝桥杯集训·每日一题】AcWing 3485. 最大异或和
文章目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 三、知识风暴 前缀和 Tire树 贪心算法
169 0
|
存储 算法 Java
leetcode每日一题:数组专练篇第二期(2/2)
leetcode每日一题:数组专练篇第二期(2/2)
|
前端开发
#yyds干货盘点# 前端歌谣的刷题之路-第一百一十七题-实现斐波那契数列
#yyds干货盘点# 前端歌谣的刷题之路-第一百一十七题-实现斐波那契数列
90 0
#yyds干货盘点# 前端歌谣的刷题之路-第一百一十七题-实现斐波那契数列
|
算法 程序员 Python
力扣——算法入门计划第四天
力扣(LeetCode)是领扣网络旗下专注于程序员技术成长和企业技术人才服务的品牌。源自美国硅谷,力扣为全球程序员提供了专业的IT技术职业化提升平台,有效帮助程序员实现快速进步和长期成长。 此外,力扣(LeetCode)致力于解决程序员技术评估、培训、职业匹配的痛点,逐步引领互联网技术求职和招聘迈向专业化。
力扣——算法入门计划第四天