pat-1023 Have Fun with Numbers (20分)

在这里插入图片描述

讲一讲一些细节:
(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;
} 

猜你喜欢

转载自blog.csdn.net/weixin_44110100/article/details/106905421