⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hp.cpp

📁 高精度计算C++类的算法
💻 CPP
字号:
#include<stdlib.h>
#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;

class number{
public:
	int num[10000];
	int len;
	number()
	{
		memset(num,0,100*sizeof(long));
		len=0;
	}
	number(string a)
	{
		memset(num,0,100*sizeof(long));
		Input(a);
	}
	void Input(string a)
	{
		int i,temp;
		char *p;
		len=a.length();
		p=&a[0];
		for(i=0;i<len;i++)
		{
			temp=(len-i+3)/4-1;
			num[temp]*=10;
			num[temp]+=*p-48;
			p++;
		}
		len=(len+3)/4;
	}
	void operator =(string a)
	{
		memset(num,0,100*sizeof(long));
		Input(a);
	}
	string Output()
	{
		string a;
		int i;
		int temp=0;
		for(i=len;i>=0;i--)
		{
			a+=num[i]/1000+48;
			a+=(num[i]/100)%10+48;
			a+=(num[i]/10)%10+48;
			a+=num[i]%10+48;
		}
		while(*(&a[0]+temp)=='0')temp++;
		a=&a[0]+temp;
		return a;
	}
	void Plus(number p2)
	{
		int i;
		int l1=len,l2=p2.len,max;
		max=l1>=l2?l1:l2;
		for(i=0;i<max;i++)
		{
			num[i]=num[i]+p2.num[i];
			num[i+1]+=num[i]/10000;
			num[i]%=10000;
		}
		if(num[max+1]!=0)len=max+1;
	}
	void Mul(number p2)
	{
		int i,j;
		int l1=len,l2=p2.len;
		for(i=l1-1;i>=0;i--)
		{
			for(j=l2-1;j>0;j--)
			{
				num[i+j]+=num[i]*p2.num[j];
			}
			num[i]=num[i]*p2.num[0];
		}
		for(i=0;i<l1+l2;i++)
		{
			num[i+1]+=num[i]/10000;
			num[i]%=10000;
		}
		if(num[l1+l2-1]!=0)len=l1+l2;
			else len=l1+l2-1;
	}
};
void main()
{
	string a,b;
	number num1("1"),num2("2");
	for(int i=1;i<=100;i++)
	{
 		num1.Mul(num2);
	}
	cout<<num1.Output();
	system("pause");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -