ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

算法学习(一)(大数运算)

2019-12-19 12:58:27  阅读:208  来源: 互联网

标签:运算 大数 int len1 else len2 算法 100 include


二、大数相减

//大数相减
#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int x[100]={0},y[100]={0},z[100]={0};
void sub(int x[],int y[],int len)
{
	for(int i=0;i<len;i++)
	{
		if(x[i]>=y[i]) z[i]=x[i]-y[i];
		else if(x[i]<y[i])
		{
			z[i]=x[i]+10-y[i];
			x[i+1]=x[i+1]-1;
		}
	}
	for(int i=len-1;i>0;i--)
	{
		if(z[i]==0) len--;
		else break;
	}
	for(int i=len-1;i>=0;i--) cout<<z[i];
	cout<<endl;
}
int main()
{
	char chr1[100],chr2[100];
	int len1,len2;
	while(scanf("%s %s",chr1,chr2))
	{
		
		int i,j=0,k=0;
		len1=strlen(chr1);
		len2=strlen(chr2);
		for(i=len1-1,j=0;i>=0;i--) x[j++]=chr1[i]-'0';
		for(i=len2-1,k=0;i>=0;i--) y[k++]=chr2[i]-'0';
		if(len1>len2) sub(x,y,len1);
		else if(len1<len2) 
		{
			printf("-");
			sub(y,x,len2);
		}
		else if(len1==len2)
		{
			for(i=len1-1;i>=0;i--)
			{
				if(x[i]==y[i]) continue;
				else if(x[i]>y[i])
				{
					sub(x,y,len1);
					break;
				}
				else if(x[i]<y[i])
				{
					printf("-");
					sub(y,x,len1);
					break;
				}
			}
		    if(i==-1) sub(x,y,len1);
		}
	}
	return 0;
 } 

  

一、大数相加

#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int main()
{
	char chr1[100],chr2[100];
	int a[100]={0},b[100]={0},c[100]={0};
	int len1,len2,len;
	while(scanf("%s %s",chr1,chr2))
	{
		int i,j=0,k=0;
		len1=strlen(chr1);
		len2=strlen(chr2);
		for(i=len1-1;i>=0;i--) 
		{
			a[j]=chr1[i]-'0';
			j++;
		}
		for(i=len2-1;i>=0;i--)
		{
			b[k]=chr2[i]-'0';
			k++;
		}
		if(len1>len2) len=len1;
		else len=len2;
		int m=0;
		for(i=0;i<len;i++)
		{
			c[i]=(a[i]+b[i]+m)%10;
			if(a[i]+b[i]+m>=10) m=1;
			else m=0;
		}
		if(a[i-1]+b[i-1]+m>10) c[i]=1;
		else i=i-1;
		for(;i>=0;i--) cout<<c[i];
		cout<<endl;
	}
	return 0;
 }

标签:运算,大数,int,len1,else,len2,算法,100,include
来源: https://www.cnblogs.com/jianqiao123/p/12067077.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有