1 条题解

  • 0
    @ 2024-12-24 9:49:23

    C :

    #include  <stdio.h>
    #include <string.h>
    
    char data[30];/*存储转换后的进制*/
    int len;/*进制长度*/
    
    int temp[20];/*存储进制数*/
    
    int main()
    {
        int n;
        int i,j,a,z;
        int x,flag,nn=0;/*flag做标志*/
        while(scanf("%d",&n)&&n!=0)
        {
            z=0;
            /*初始化temp*/
            for(j=0;j<20;j++)
                temp[j]=0;
    
            for(i=2;i<=16;i++)
            {
                /*每次都初始化data数组*/
                for(j=0;j<30;j++)
                    data[j]=0;
                flag=1;
                len=0;
                x=n;
                while(x)
                {
                    data[len++]=x%i;
                    x/=i;
                }
                for(j=0;j<len;j++)
                {
                    if(data[j]!=data[len-1-j])
                        {
                            flag=0;
                            break;
                        }
                }
                if(flag)
                    temp[z++]=i;
            }
            if(nn)
                printf("\n");
            else
                nn=1;
            if(z>0)
            {
                printf("Number %d is palindrom in basis",n);
                for(j=0;j<z;j++)
                    printf(" %d",temp[j]);
            }
            else
                printf("Number %d is not a palindrom",n);
        }
      return 0;
    }
    
    

    C++ :

    #include <bits/stdc++.h>
    using namespace std;
    
    int change(int data,int base)
    {
    	
    	int a[25];
    	int len=0;
    	while(data){
    		a[len++]=data%base;
    		data=data/base;
    	}
    	
    	
    	for (int i=0;i<len/2;i++){
    		if (a[i]!=a[len-1-i]) return 0;
    	}
    	
    	return 1;
    }
    
    int main()
    {
    	int n;
    	while(scanf("%d",&n)!=EOF&&n){
    		
    		queue<int> q;
    		
    		
    		for (int is=2;is<=16;is++){
    			if (change(n,is)) q.push(is);
    		}
    		
    		
    		if (q.size()>0){
    			
    			printf("Number %d is palindrom in basis",n);
    			
    			while(q.size()){
    				printf(" %d",q.front());
    				q.pop();
    			}
    			
    			printf("\n");
    		}
    		
    		else printf("Number %d is not a palindrom\n",n);
    		
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    840
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者