• USACO Training Section 1.2 [USACO1.2]回文平方数


    题目描述
    回文数是指从左向右念和从右向左念都一样的数。如12321就是一个典型的回文数。

    给定一个进制B(2<=B<=20,由十进制表示),输出所有的大于等于1小于等于300(十进制下)且它的平方用B进制表示时是回文数的数。用’A’,’B’……表示10,11等等

    输入输出格式
    输入格式:

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

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

    输入输出样例
    输入样例#1:

    10
    输出样例#1:
    1 1
    2 4
    3 9
    11 121
    22 484
    26 676
    101 10201
    111 12321
    121 14641
    202 40804
    212 44944
    264 69696
    说明
    题目翻译来自NOCOW。

    这道题,主要还是考察进制转换,如果用char 数组对于时间还可以进行优化,但是这个题时间足够,这样写可以偷懒。其次是完全枚举。

    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    string solve(int a,int b);
    bool flag;
    int main()
    {
            int n;
            cin>>n;
            for(int i=1;i<=300;i++)
            {
                    string  a=solve(i,n);
                   string b=solve(i*i,n);
                    if(flag) cout<<a<<' '<<b<<endl;
            }
            return 0;
    }
    string solve(int a,int b)
    {
        string d;
            d.clear();
        int i=0;
        char c;
        while(a%b!=a)
        {
            i=a%b;
            if(i>=10) c=char(i+55);
            else c=i+'0';
            a=a/b;
           d.push_back(c);
        }
        if(a>=10) c=char(a+55);
        else c=a+'0';
        d.push_back(c);
        string e=d;
        reverse(d.begin(),d.end());
        if(e==d) flag=1;
        else flag=0;
        return d;
    }
    
    
  • 相关阅读:
    POJ3666 Making the Grade[动态规划]
    vector内部的实现1
    win32概述
    stl概述
    C++概要简介
    类的常量成员
    模板
    c11标准
    异常处理
    pak文件的打包和解包
  • 原文地址:https://www.cnblogs.com/lunatic-talent/p/12798919.html
Copyright © 2020-2023  润新知