10 solutions
-
6
#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]>=10) c[i]-=10,c[i+1]++;//如果大于10这一位减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; }
不是最优解但也够了
-
3
#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]>=10){ 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]; } }
-
2
太长了,自己看或复制
#include<string> #include<bits/stdc++.h> using namespace std; class long_int { public: string num; long_int(string s) { num=s; } void num_add(string str2) { string str1=num; string ans; int i=str1.size()-1,j=str2.size()-1; int flag=0; while(i>=0||j>=0||flag) { int numa=i>=0?str1[i--]-'0':0; int numb=j>=0?str2[j--]-'0':0; flag=numa+numb+flag; ans+='0'+flag%10; flag/=10; } reverse(ans.begin(),ans.end()); num=ans; } string get() { return num; } bool is_small(string str2) { string str1=num; return str1.size()<str2.size()||(str1.size()==str2.size()&&str1<str2); } }; int main() { string s,t; cin>>s>>t; long_int a(s); a.num_add(t); cout<<a.get(); }
-
0
#include<bits/stdc++.h> #include <string> using namespace std; int fn[205],sn[205],ans[210]; void read(int a[]) { char s[210]; cin >> s; int lenth = strlen(s); for(int i = 0; i < lenth; i++) a[lenth - i - 1] =s[i]-'0'; } void print(int b[]) { int i; for(i = 200-1; i >= 1; i--) if(b[i] != 0) break; for(; i >= 0; i--) cout << b[i]; cout << endl; } void add (int a[], int b[], int c[]) { for(int i = 0; i <= 199; i++) { c[i] += b[i]+a[i]; if(c[i] >= 10) { c[i+1] += 1; c[i] -= 10; } } } int main() { read(fn); read(sn); add(fn, sn, ans); print(ans); return 0; }
-
0
#include<bits/stdc++.h> using namespace std; int l1,l2; int maxlen; int jiashu1[205],jiashu2[205],he[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 APAadd(int a[],int b[],int c[]) { for (int i = 0; i < maxlen; i++) { c[i] += a[i]+b[i]; if (c[i] >= 10) { 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,jiashu1); input(n2,jiashu2); l1 = n1.length(); l2 = n2.length(); maxlen = max(l1,l2); APAadd(jiashu1,jiashu2,he); output(he); return 0; }
-
0
#include<bits/stdc++.h> using namespace std; int l1,l2; int maxlen; int jiashu1[205]={0},jiashu2[205]={0},he[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 APAadd(int a[],int b[],int c[]){ for(int i=0;i<maxlen;i++){ c[i]+=(a[i]+b[i]); if(c[i]>=10){ 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,jiashu1); input(n2,jiashu2); l1=n1.length(); l2=n2.length(); maxlen=max(l1,l2); APAadd(jiashu1,jiashu2,he); output(he); return 0; }
-
0
其实不长
#include <iostream> using namespace std; int a[1005],b[1005],c[1005]; 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'; } void adding(int x[],int y[],int z[]){ z[0]=max(x[0],y[0]); for(int i=1;i<=z[0];i++) z[i]=x[i]+y[i]; for(int i=1;i<=z[0];i++){ z[i+1]+=z[i]/10; z[i]%=10; } z[0]++; while(z[z[0]]==0&&z[0]>1) z[0]--; } void print(int a[]){ for(int i=a[0];i>=1;i--) cout<<a[i]; cout<<" "<<endl; } int main(){ string x,y; cin>>x>>y; s2big(x,a); s2big(y,b); adding(a,b,c); print(c); return 0; }
-
0
#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(); for (int i = 1;i <= l1;i++){ a[i] = s1[l1 - i] - '0'; } for (int i = 1;i <= l2;i++){ b[i] = s2[l2 - i] - '0'; } int l3 = 1/*索引*/,jw = 0/*进位*/; while(l3 <= l1+1 || l3 <= l2+1){ c[l3] = a[l3] + b[l3] + jw; jw = c[l3] / 10; c[l3] %= 10; l3++; } while(c[l3] == 0){ // 删除前导0 l3--; } for (int i = l3;i > 0;i--){ cout << c[i]; } return 0; }
-
0
#include <iostream> #include <string> using namespace std; int main() { string A,B; int lenA,lenB; int a[300]={},b[300]={},h[300]={}; cin >> A >> B; lenA = A.length(); lenB = B.length(); for(int i=1;i<=lenA;i++){ a[i] = A[lenA-i]-'0'; } for(int i=1;i<=lenB;i++){ b[i] = B[lenB-i]-'0'; } int c=0; for (int i=1;i<max(lenA,lenB)+1;i++){ if (a[i]+b[i]+c<10){ h[i] = a[i]+b[i]+c; }else{ h[i] = (a[i]+b[i]+c)%10; } c = (a[i]+b[i]+c)/10; } if (c!=0){ h[max(lenA,lenB)+1] = 1; for (int i=max(lenA,lenB)+1;i>0;i--){ cout << h[i]; } }else{ for (int i=max(lenA,lenB);i>0;i--){ cout << h[i]; } } }
- 1
Information
- ID
- 654
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 7
- Tags
- # Submissions
- 238
- Accepted
- 48
- Uploaded By