【Acwing1346】将一个十进制的数转化为b进制(1 <= b <= 20)

1346. 回文平方

进位制、双指针判断回文数

#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;

char get(int x) // 将x转化为b进制
{
    if(x <= 9) return x + '0';
    return x - 10 + 'A';
}

string base(int n, int b) // n 在 b 进制下的表示
{
    string num;
    while(n) num += get(n % b), n /= b;
    reverse(num.begin(), num.end());
    return num;
}

bool check(string num)
{
    for(int i = 0, j = num.size() - 1; i < j; i ++, j -- )
        if(num[i] != num[j])
            return false;
    return true;
}

int main()
{
    int b;
    cin >> b;
    for(int i = 1; i <= 300; i ++ )
    {
        string num = base(i * i, b);
        if(check(num))
            cout << base(i, b) << ' ' << num << endl;
    }
    return 0;
}
posted @   Tshaxz  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
Language: HTML
点击右上角即可分享
微信分享提示