zoukankan      html  css  js  c++  java
  • ZOJ 1078 Palindrom Numbers

    原题链接

    题目大意:判断一个数是不是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;
    }
  • 相关阅读:
    Asp.Net 获取客户端真实IP方法总结
    C# 中英文符号互转(半角全角互转)
    执行git commit命令提示: “Please tell me who you are”的解决方案
    Tools
    VSC
    DevOps
    VSC
    DevOps
    DevOps
    K8S
  • 原文地址:https://www.cnblogs.com/naive/p/3568763.html
Copyright © 2011-2022 走看看