📄 hp.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 + -