高精度运算

int a ;//数据类型的范围:-2^31~2^31-1,数量级为10^9
long long int ;//数据类型范围:-2^63~2^63-1,数量级为10^18
//由于进行较大的数运算时,无法用Int 和long long 所以下面需要学习高精度

一.高精度的加法

//算法核心;
c[i]+=a[i]+b[i];
c[i+1]=c[i]/10;
c[i]=c[i]%10;

加法完整代码:

//代码
#include
using namespace std;
#include
#include
int a[505],b[505],c[505];
char s1[505],s2[505];
int main()
{
	int la,lb,lc,i;
	cin>>s1>>s2;
	la=strlen(s1);
	lb=strlen(s2);//从s[0]开始储存 
	for(i=0;i0) lc--;//删除前导零,同时lc的长度不能为0,所以要求lc>0 || lc>=1 
	for(i=lc;i>=1;i--)
	 cout<

二.高精度的减法

//核心代码
if(a[i]

减法完整代码:

//代码
#include
using namespace std;
#include
#include
int a[10086],b[10086],c[10086];
char s1[10086],s2[10086],s3[10086];

//比较函数
bool compare(char s1[],char s2[])
{
	int m=strlen(s1),n=strlen(s2);
	if(m!=n) return m>n;//不同长度 
	for(int i=0;is2[i];
	}
	return true;
} 
int main()
{
	int la,lb,lc,i,flag;
	cin>>s1>>s2;
	if(!compare(s1,s2))//ifcompare(s1,s2)为false才会执行,此时s11) lc--;
	if(flag==1) cout<<"-";
	for(i=lc;i>0;i--)
	 cout<

三.高精度的乘法

//核心算法
c[i+j-1] +=a[i]*a[j];
c[i+j] +=c[i+j-1]/10;
c[i+j-1] %=10; 

 乘法完整代码:

#include
using namespace std;
#include
#include
int a[2005],b[2005],c[2005];
char s1[2005],s2[2005];
int main()
{
	int la,lb,lc,i;
	cin>>s1>>s2;
	la=strlen(s1);
	lb=strlen(s2);//从s[0]开始储存 
	for(i=0;i0) lc--;
	for(i=lc;i>0;i--)
	 cout<

你可能感兴趣的:(算法,c/c++语言基本知识,蓝桥杯,c++,职场和发展)