【高精度】大整數類
阿新 • • 發佈:2019-01-06
把這段模版敲上,直接像定義int一樣定義變數就行了,支援加減和賦值、輸入、輸出(只能用cin,cout)
例如struct BigInteger{ int size,num[1000]; BigInteger(){ size=0; memset(num,0,sizeof(num)); } BigInteger(int data){ size=0; while(data!=0){ size++; num[size]=data%10; data=data/10; } } void init(int data){ size=0; while(data!=0){ size++; num[size]=data%10; data=data/10; } } }; BigInteger operator + (BigInteger A,BigInteger B){ BigInteger Ans; int s=max(A.size,B.size); Ans.size=s; for(int i=1;i<=s;i++) Ans.num[i]=A.num[i]+B.num[i]; for(int i=1;i<=s;i++) if(Ans.num[i]>=10){ Ans.num[i+1]+=Ans.num[i]/10; Ans.num[i]=Ans.num[i]%10; } if(Ans.num[s+1]!=0) Ans.size++; return Ans; } BigInteger operator - (BigInteger A,BigInteger B){ BigInteger Ans; int s=max(A.size,B.size); Ans.size=s; for(int i=1;i<=s;i++) Ans.num[i]=A.num[i]-B.num[i]; for(int i=1;i<=s;i++) if(Ans.num[i]<0){ Ans.num[i+1]-=Ans.num[i]/10; Ans.num[i]=Ans.num[i]%10; } if(Ans.num[s+1]!=0) Ans.size++; return Ans; } ostream & operator << (ostream &os,BigInteger A){ int s=A.size; for(int i=s;i>=1;i--) os<<A.num[i]; return os; }
Bigint a;
cin>>a;
cout<<a;