和上次一样,这个也是需要你手动修改位数的,依然用的是struct
#includeusing namespace std; const int N=5007; char s[N]; struct node{ int num[N],len; void init(){ memset(num,0,sizeof(num)); len=1; } void toz(){ while(num[len]==0) len--; } void read(){ scanf("%s",s+1); len=strlen(s+1); for(int i=1;i<=len;i++) num[len-i+1]=s[i]-'0'; } void write(){ for(int i=len;i>=1;i--) printf("%d",num[i]); printf("n"); } }s1,s2,ans; bool operator<(node a,node b){ if(a.len!=b.len) return a.len =1;i--) if(a.num[i]!=b.num[i]) return a.num[i] #include
using namespace std;
const int N=5007;
char s[N];
struct node{
int num[N],len;
void init(){
memset(num,0,sizeof(num));
len=1;
}
void toz(){
while(num[len]==0) len--;
}
void read(){
scanf("%s",s+1);
len=strlen(s+1);
for(int i=1;i<=len;i++)
num[len-i+1]=s[i]-'0';
}
void write(){
for(int i=len;i>=1;i--)
printf("%d",num[i]);
printf("n");
}
}s1,s2,ans;
bool operator<(node a,node b){
if(a.len!=b.len) return a.lenfor(int i=a.len;i>=1;i--)
if(a.num[i]!=b.num[i]) return a.num[i]return 0;
}
node operator-(node a,node b){
node c;
c.init();
if(a swap(a,b);
printf("-");
}
c.len=max(a.len,b.len);
for(int i=1;i<=c.len;i++){
c.num[i]+=a.num[i]-b.num[i];
if(c.num[i]<0){
c.num[i+1]--;
c.num[i]+=10;
}
}
c.toz();
return c;
}
int main(){
s1.read();
s2.read();
ans=s1-s2;
ans.write();
return 0;
}欢迎分享,转载请注明来源:内存溢出
评论列表(0条)