首页 > 其他 > 详细

ZOJ 1078 Palindrom Numbers

时间:2014-02-27 22:55:16      阅读:670      评论:0      收藏:0      [点我收藏+]

原题链接

题目大意:判断一个数是不是palindrom。不限于十进制,可以在任何进制下判断。

解法:还好,数字的范围不大,int类型足够搞定。方法就是从2进制开始,先把数字转换成2进制,判断是否对称,然后转换成3进制,直到16进制。这里的进制转换方法可以留意一下。

 

参考代码:

#include<iostream>

using namespace std;
bool isPalindrom(int, int);

int main(){
	int i,n;
	
	while(cin>>n&&n!=0){
		bool base[17]={false}, flag=false;;
		for(i=2;i<=16;i++){
			if(isPalindrom(n,i)==true){
				base[i]=true;
				flag=true;
			}
		}
		if(flag){
			cout<<"Number "<<n<<" is palindrom in basis";
			for(i=2;i<=16;i++){
				if(base[i])
					cout<<‘ ‘<<i;
			}
			cout<<endl;
		}else{
			cout<<"Number "<<n<<" is not a palindrom"<<endl;
		}
	}

	return 0;
}

bool isPalindrom(int n,int base){
	char s[16];
	int j=0,k;
	
	while(n!=0){      //十进制到任意进制的转换
		s[j]=‘0‘+n%base;
		n/=base;
		j++;
	}
	for(k=0;k<j/2;k++){
		if(s[k]==s[j-k-1])
			continue;
		else
			return false;
	}
	return true;
}

ZOJ 1078 Palindrom Numbers,布布扣,bubuko.com

ZOJ 1078 Palindrom Numbers

原文:http://www.cnblogs.com/naive/p/3568763.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!