AcWing 1500. 趣味数字
原题链接
简单
作者:
goldstine
,
2021-07-16 21:45:43
,
所有人可见
,
阅读 249
题目描述
高精度加法
vector<int> add(vector<int> &a,vector<int> &b){
if(a.size()<b.size()){return add(b,a);}
vector<int> c;
int t=0;
for(int i=0;i<a.size();i++){
t+=a[i];
if(i<b.size()){
t+=b[i];
}
c.push_back(t%10);
t/=10;
}
if(t){
c.push_back(t);
}
return c;
}
算法1
C++ 代码
#include<iostream>
#include<vector>
#include<algorithm>
#include<cstring>
using namespace std;
vector<int> add(vector<int> &a,vector<int> &b){
if(a.size()<b.size()){
return add(b,a);
}
vector<int> c;
int t=0;//进位
for(int i=0;i<a.size();i++){
t+=a[i];
if(i<b.size()){
t+=b[i];
}
c.push_back(t%10);
t/=10;
}
if(t>0){
c.push_back(t);
}
return c;
}
int main(){
string str;
cin>>str;
vector<int> a,b,res;
for(int i=str.size()-1;i>=0;i--){
a.push_back((str[i]-'0'));
}
res=add(a,a);
b=res;
sort(a.begin(),a.end()); //两个数的数字的个数要相同,使用的数字和个数都相等
sort(b.begin(),b.end());
if(a==b){
cout<<"Yes"<<endl;
}else{
cout<<"No"<<endl;
}
for(int i=res.size()-1;i>=0;i--){
cout<<res[i];
}
return 0;
}