·First 高精加
#include <bits/stdc++.h>
#include <cstdio>
using namespace std;
int a[100000];
int b[100000];
void gaojing(int a[],int b[])
{
int k=0;
if(a[0]>=b[0])
{
k=a[0];
}
else
{
k=b[0];
}
for(int i=1;i<=k;i++)
{
a[i+1]+=(a[i]+b[i])/10;
a[i]=(a[i]+b[i])%10;
}
if(a[k+1]>0)
{
a[0]=k+1;
}
else
{
a[0]=k;
}
}
int main ()
{
string s1,s2;
cin>>s1>>s2;
memset(a,0,sizeof(a));
memset(a,0,sizeof(b));
a[0]=s1.length();
b[0]=s2.length();
for(int i=1;i<=a[0];i++)
{
a[i]=s1[a[0]-i]-'0';
}
for(int i=1;i<=b[0];i++)
{
b[i]=s2[b[0]-i]-'0';
}
gaojing(a,b);
for(int i=a[0];i>0;i--)
{
cout<<a[i];
}
cout<<endl;
return 0;
}
·Second 高精减
#include<iostream>
#include<cstring>
using namespace std;
int a[10010],b[10010],c[10010];
char s1[10010],s2[10010],s3[10010];
int main(){
cin>>s1>>s2;
int la,lb,lc,i,x;
la=strlen(s1);
lb=strlen(s2);
if(la<lb||la==lb && strcmp(s1,s2)<0){
swap(s1,s2);
swap(la,lb);
cout<<"-";
}
for(i=1;i<=la;i++)
a[i]=s1[la-i]-48;
for(i=1;i<=lb;i++)
b[i]=s2[lb-i]-48;
lc=1;
while(lc<=la){
if(a[lc]<b[lc]){
a[lc]+=10;
a[lc+1]--;
}
c[lc]=a[lc]-b[lc];
lc++;
}
while(c[lc]==0&&lc>1){
lc--;
}
for(int i=lc;i>=1;i--){
cout<<c[i];}
return 0;
}
·Third 高精乘
#include<bits/stdc++.h>
using namespace std;
string s1,s2;
int loa,lob,loc,a[10005],b[10005],c[20005];
int main()
{
cin>>s1>>s2;
loa=s1.length();
lob=s2.length();
if(s1[0]=='0' || s2[0]=='0')
{
cout<<0;
return 0;
}
if(loa<lob || (loa==lob && s1[0]<s2[0]))
{
swap(s1,s2);
swap(loa,lob);
}
if(s1[0]=='-' && s2[0]!='-')
{
cout<<"-";
s1[0]=' ';
s2=' '+s2;
}
if(s2[0]=='-' && s1[0]!='-')
{
cout<<"-";
s2[0]=' ';
s1=' '+s1;
}
if(s1[0]!='-' && s2[0]!='-')
{
s1=' '+s1;
s2=' '+s2;
}
if(s1[0]=='-' && s2[0]=='-')
{
s1[0]=' ';
s2[0]=' ';
}
for(int i=1;i<=loa;i++)
{
a[i]=s1[loa-i+1]-'0';
}
for(int i=1;i<=lob;i++)
{
b[i]=s2[lob-i+1]-'0';
}
for(int i=1;i<=lob;i++)
{
for(int j=1;j<=loa;j++)
{
c[i+j-1]=c[i+j-1]+(b[i]*a[j]);
c[i+j]+=c[i+j-1]/10;
c[i+j-1]%=10;
}
}
int loc=loa+lob;
while(loc>0 && c[loc]==0)
{
loc--;
}
for(int i=loc;i>=1;i--)
{
cout<<c[i];
}
return 0;
}
·Fourth 高精除低精
#include <bits/stdc++.h>
#include <cstdio>
using namespace std;
string st;
long long s,i,x,n,a[10001],l,b[10001];
int main()
{
cin>>st>>s;
l=st.size();
for (i=1;i<=l;++i)
{
a[i]=st[i-1]-48;
}
for (i=1;i<=l;++i)
{
x=x*10+a[i];
b[i]=x / s;
x=x % s;
}
n=1;
while(b[n]==0 && n<l)
{
n++;
}
for (i=n;i<=l;++i)
{
cout<<b[i];
}
cout<<endl;
return 0;
}
作为一个蒟蒻,当然不会写高精除高精的