AcWing 1346. 双指针
原题链接
简单
作者:
史一帆
,
2021-04-29 16:41:29
,
所有人可见
,
阅读 277
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
bool check(string s) // 检查s是否回文
{
for (int i = 0, j = s.size() - 1; i < j; i ++ , j -- )
if (s[i] != s[j]) return false;
return true;
}
char get(int x) // 将x转换为字符形式
{
if (x <= 9) return x + '0';
return x - 10 + 'A';
}
string base(int n, int b) // 将n转换为b进制,返回对应的字符串
{
string res;
while (n)
{
res += get(n % b);
n /= b;
}
reverse(res.begin(), res.end());
return res;
}
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;
}