PAT甲级1019

1019 General Palindromic Number (20分)

emm一次就过了所以也没看出来测试点。。。大概需要注意的就是当N为0时直接输出Yes吧

思路:比较直接,首先进行进制的转换,转换后的数字判断是否是对称的即可

#include
using namespace std;
vector<int> tobase(int n,int b){
	vector<int> num;
	if (n==0){
		num.push_back(0);
		return num;
	}
	while(n!=0){
		num.push_back(n%b);
		n/=b;
	}
	return num;
}

bool ispalind(vector<int> n){
	for(int i=0;i<n.size()/2;i++)
		if(n[i]!=n[n.size()-1-i])return false;
	return true;	
}

int main(){
	int n,b;
	cin>>n>>b;
	vector<int> num=tobase(n,b);
	if(ispalind(num))cout<<"Yes"<<endl;
	else cout<<"No"<<endl;
	int i;
	for(i=num.size()-1;i>0;i--)
		cout<<num[i]<<" ";
	cout<<num[i];
	return 0;
}

你可能感兴趣的:(PAT甲级刷题历程)