3 条题解
-
1
一道小模拟
#include <bits/stdc++.h> using namespace std; string a,b; int x[100000],y[100000]; int z[100000]; int main(){ cin>>a>>b; int len=max(a.size(),b.size()); //逆置转整 for(int i=a.size()-1,j=0;i>=0;i--,j++){ x[j]=a[i]-'0'; } for(int i=b.size()-1,j=0;i>=0;i--,j++){ y[j]=b[i]-'0'; } //加 for(int i=0;i<len;i++){ z[i]+=x[i]+y[i]; if(z[i]>=10){ z[i]-=10; z[i+1]+=1; } } //输出 int f=0;//无效输出 for(int i=len;i>=0;i--){ if(z[i]!=0){ f=1; } if(f==1){ cout<<z[i]; } } return 0; }
-
0
#include <iostream> #include <vector> using namespace std; const int N = 1e6+10; vector<int> add(vector<int> & A,vector<int> &B) { vector<int> c; int t = 0; for(int i = 0;i<A.size()||i<B.size();i++) { if(i<A.size()) t+=A[i]; if(i<B.size()) t+=B[i]; c.push_back(t%10); t /= 10; } if(t) c.push_back(1); return c; } int main(){ string a,b; vector<int> A,B; cin>>a>>b; for(int i = a.size()-1;i>=0;i--) A.push_back(a[i]-'0'); for(int i = b.size()-1;i>=0;i--) B.push_back(b[i]-'0'); vector<int> c = add(A,B); for(int i = c.size()-1;i>=0;i--) printf("%d",c[i]); return 0; }
-
0
这道题真的很难
首先,我们要知道这道题的步骤
但,在完成这些步骤前,我们要先完成这些。
const int maxn = 500+5; int a[maxn];//加数 int b[maxn];//加数 int c[maxn];//进位 int ans[maxn];//结果 string s;//不搞这个没法一次性输入加数
步骤一共有四步
一,把
s
中的值移入a
依然有个前提,就是要先定义这个
int la = s.length();//加数的长度
代码如下cin >> s;//输入加数 int la = s.length(); for(int i=1;i<=la;i++){ a[i] = s[la-i]-'0';//把s中的值倒着加入 }
至于为什么要减去字符0可以看这个 第二步同上 再这样加
int len = max(la,lb); for(int i=1;i<=len;i++){ ans[i] = (a[i] + b[i] + c[i])%10; c[i+1] = (a[i] + b[i] + c[i])/10; }
最后这样输出
if(c[len+1] != 0){//特判 cout << c[len+1]; } for(int i=len;i>=1;i--){ cout << ans[i]; }
- 1
信息
- ID
- 5659
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 2
- 标签
- 递交数
- 137
- 已通过
- 72
- 上传者