zoukankan      html  css  js  c++  java
  • 回文平方数

    回文数是指从左向右念和从右向左念都一样的数。如12321就是一个典型的回文数。 给定一个进制B(2<=B<=20,由十进制表示),输出所有的大于等于1小于等于300(十进制下)且它的平方用B进制表示时是回文数的数。用’A’,’B’……表示10,11等等。

    Input

    共一行,一个单独的整数B(B用十进制表示)。

    Output

    每行两个B进制的符合要求的数字,第二个数是第一个数的平方,且第二个数是回文数。

    Sample Input

    10 

    Sample Output

    1 1
    2 4
    3 9
    11 121
    22 484
    26 676
    101 10201
    111 12321
    121 14641
    202 40804
    212 44944
    264 69696
    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cmath>
    #include <cstring>
    using namespace std;
    typedef long long ll;
    char aa[100];
    char bb[100];
    ll yang2()
    {
        ll n=strlen(aa);
        ll i,ans=0;
        for(i=0;i<n/2;i++)
        {
            if(aa[i]==aa[n-i-1])
                ans++;
        }
        if(ans>=n/2)
            return 1;
        else
            return 0;
    }
    ll yang(ll n,ll a)
    {
        ll m;
        memset(aa,0,sizeof(aa));
        ll i=0;
        while(n)
        {
            if(n%a>=10)
                aa[i]=char('A'+(n%a-10));
            else
               aa[i]=n%a+48;
            n/=a;
            i++;
        }
        aa[i]=0;
        ll ans=yang2();
        if(ans==1)
            return 1;
        else
            return 0;
    }
    ll yang4()
    {
        ll n=strlen(bb);
        ll i;
        char t;
        for(i=0;i<n/2;i++)
        {
            t=bb[i];
            bb[i]=bb[n-i-1];
            bb[n-i-1]=t;
        }
    }
    ll yang3(ll n,ll a)
    {
        ll m;
        memset(bb,0,sizeof(bb));
        ll i=0;
        while(n)
        {
            if(n%a>=10)
                bb[i]=char('A'+(n%a-10));
            else
               bb[i]=n%a+48;
            n/=a;
            i++;
        }
        bb[i]=0;
        yang4();
    }
    int main()
    {
        ll n,i,j,b;
        cin>>b;
        for(i=1;i<=300;i++)
        {
            ll ans=yang(i*i,b);
            if(ans==1)
            {
                yang3(i,b);
                cout<<bb<<" "<<aa<<endl;
            }
    
        }
        return 0;
    }
    
  • 相关阅读:
    Linux下如何查看哪些进程占用的CPU内存资源最多
    linux查看端口占用情况
    oracle11g用户名密码不区分大小写
    oracle表导入导出
    Oracle的实例占用内存调整
    修改oracle内存
    ORA-04031: 无法分配 共享内存
    OCI_INVALID_HANDLE 什么原因
    Android SDK Manager国内无法更新的解决方案
    sqlite3增删改查简单封装
  • 原文地址:https://www.cnblogs.com/zcy19990813/p/9702697.html
Copyright © 2011-2022 走看看