讲一讲一些细节:
(1)关于大整数的加法,longlong 类型只能存19位数字
(2)关于存储,输入的时候因为数字太大。应该先输入字符串。但是压入vector的时候,需要去进行转换,从哪个字符串转换位数字(-‘0’),减去一个偏移量。从字符转换位数字
(3)进为加法,要设置进位。
(4)vector的排序,涉及的迭代器的时候,虽然很简单。
(5)关于数字的比较,vector内置可以比较(通过字典顺序)
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
string num;
cin>>num;
vector<int> a;
for(int i=num.size()-1;i>=0;i--) a.push_back(num[i]-'0');//减去一个偏移量,从字符转换一个整数
//怎么翻倍;注意翻倍之后可能位数会相加
vector<int> b;
int t=0;//设置一个进位
for(int i=0;i<a.size();i++){
int sum=a[i]+a[i]+t;
//把当前的位进入进来,而且判断是否大于10(取模就解决了)
b.push_back(sum%10);
t=sum/10;
}
//检查最高位是否还产生了进位,
if(t) b.push_back(t);
//如果判断两个数组中,包含的数是一样的?
vector<int> c=b;
sort(a.begin(),a.end());
sort(c.begin(),c.end());
if(a==c) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
for(int i=b.size()-1;i>=0;i--){
cout<<b[i];
}
return 0;
}