2 条题解
-
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
这道题真的很难
首先,我们要知道这道题的步骤
但,在完成这些步骤前,我们要先完成这些。
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
- 标签
- 递交数
- 125
- 已通过
- 67
- 上传者