6 solutions
-
2
#include<bits/stdc++.h> using namespace std; string a,b;//两个字符串存个输入值 int x[205],xx[205];//第一个数、第二个数 int xxx[205]={};//答案 void in(string a,int x[]){//将输入存进int数组里面 int t=a.size(); for(int i=0;i<t;i++){ x[i]=a[i]-'0';//记得减‘0’ } } void turn(string &a){//反转字符串,千万记得取地址! string s=""; long t=a.size(); for(int i=t-1;i>=0;i--){ s+=a[i]; } a=s; } void add(int a[],int b[],int c[]){//减 for(int i=0;i<205;i++){ c[i]+=a[i]-b[i]; if(c[i]<0) c[i]+=10,c[i+1]--;//如果小于0这一位加10,下一位减1(借位 } } void out(int a[]){//输出 int t=204; while(a[t]==0) t--;//排除前面的0 for(int i=t;i>=0;i--){ if(!(a[i]>=0&&a[i]<=9)) continue;//保险,以防中间有乱码 cout<<a[i]; } } int main(){ cin>>a>>b; turn(a); turn(b); in(a,x); in(b,xx); add(x,xx,xxx); out(xxx); //调用即可 return 0; }
无需判断正负,数据没有
-
1
#include<iostream> #include<string> #include<vector> using namespace std; string a; string b; int a1[201]; int b1[201]; int c1[201]; int main(){ int k=0,h=0,s; cin>>a>>b; int r=max(a.size(),b.size()); for(int i=0;i<=r;i++){ a1[i]=0; b1[i]=0; } for(int i=a.size()-1;i>=0;i--){ a1[k]=a[i]-'0'; k++; } for(int i=b.size()-1;i>=0;i--){ b1[h]=b[i]-'0'; h++; } for(int i=r-1;i>=0;i--){ c1[i]=a1[i]-b1[i]; } for(int i=0;i<r;i++){ if(c1[i]<0){ c1[i]+=10; c1[i+1]--; } } for(int i=r;i>=0;i--){ if(c1[i]!=0){ s=i; break; } } for(int i=s;i>=0;i--){ cout<<c1[i]; } }
-
1
#include <iostream> #include <cmath> using namespace std; string n,m; int x[10005],y[10005],z[10005]; void s2big(string s,int a[]){ a[0]=s.size(); for(int i=1;i<=a[0];i++) a[i]=s[a[0]-i]-'0'; } bool com(int x[],int y[]){ if(x[0]!=y[0]) return x[0]>y[0]; for(int i=x[0];i>=1;i++) if(x[i]!=y[i]) return x[i]>y[i]; return true; } void jian(int x[],int y[],int z[]){ z[0]=max(x[0],y[0]); for(int i=1;i<=z[0];i++){ if(x[i]<y[i]){ x[i+1]--; x[i]+=10; } z[i]=x[i]-y[i]; } while(z[z[0]]==0&&z[0]>1) z[0]--; } void print(int s[]){ for(int i=s[0];i>=1;i--) cout<<s[i]; cout<<endl; } int main(){ cin>>n>>m; s2big(n,x); s2big(m,y); if(!com(x,y)){ jian(y,x,z); cout<<"-"; } else jian(x,y,z); print(z); return 0; }
-
1
#include <bits/stdc++.h> using namespace std; int a[205],b[205],c[205]; string s1,s2; int main(int argc, char **argv){ cin >> s1 >> s2; int l1 = s1.length(),l2 = s2.length(); if(l1 < l2 || (l1 == l2 && s1 < s2)){ // 比较字符串 string tmp; tmp = s1; s1 = s2; s2 = tmp; cout << '-'; } l1 = s1.length(),l2 = s2.length(); // 一定要记得更新长度 for (int i = 0;i < l1;i++){ a[l1 - i] = s1[i] - '0'; } for (int i = 0;i < l2;i++){ b[l2 - i] = s2[i] - '0'; } int l3 = 1; while(l3 <= l1 || l3 <= l2){ if (a[l3] < b[l3]){ a[l3] += 10; a[l3 + 1]--; } c[l3] = a[l3] - b[l3]; l3++; } while(c[l3] == 0){ l3--; } for (int i = l3;i > 0;i--){ cout << c[i]; } return 0; }
-
0
#include<bits/stdc++.h> using namespace std; int l1,l2; int maxlen; int beijianshu[205],jianshu[205],cha[205]; void input(string s,int a[]) { int len=s.length(); for(int i = 0; i < len; i++) { a[len-i-1] = s[i] - '0'; } } void APAsub(int a[],int b[],int c[]) { for(int i = 0; i < maxlen; i++) { c[i] += a[i]-b[i]; if(c[i] < 0) { c[i] += 10; c[i+1] -= 1; } } } void output(int d[]) { if (d[maxlen]==0) { maxlen--; } for(int i = maxlen; i >= 0; i--) { cout << d[i]; } } int main () { string n1,n2; cin >> n1 >> n2; input(n1,beijianshu); input(n2,jianshu); l1 = n1.length(); l2 = n2.length(); maxlen = max(l1,l2); APAsub(beijianshu,jianshu,cha); output(cha); return 0; }
-
0
#include<bits/stdc++.h> using namespace std; int l1,l2; int maxlen; int beijianshu[205]={0},jianshu[205]={0},cha[205]={0}; void input(string s,int a[]){ int len=s.length(); for(int i=0;i<len;i++){ a[len-i-1]=s[i]-'0'; } } void APAsub(int a[],int b[],int c[]){ for(int i=0;i<maxlen;i++){ c[i]+=(a[i]-b[i]); if(c[i]<0){ c[i]+=10; c[i+1]-=1; } } } void output(int d[]){ if(d[maxlen]==0)maxlen--; for(int i=maxlen;i>=0;i--){ cout<<d[i]; } } int main(){ string n1,n2; cin>>n1>>n2; input(n1,beijianshu); input(n2,jianshu); l1=n1.length(); l2=n2.length(); maxlen=max(l1,l2); APAsub(beijianshu,jianshu,cha); output(cha); return 0; }
- 1
Information
- ID
- 655
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 6
- Tags
- # Submissions
- 136
- Accepted
- 43
- Uploaded By