AcWing 1346. 回文平方
原题链接
简单
作者:
橙外
,
2021-03-02 16:02:30
,
所有人可见
,
阅读 554
十进制转其他进制 : 短除法
其他进制转十进制 : 秦九韶算法
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int n;
char get(int x)
{
if (x <= 9) return x + '0';
else return x - 10 + 'A';
}
string base(int x,int n)
{
string now;
while (x) now += get(x % n),x /= n; // 短除法
reverse(now.begin() , now.end()); // 短除法是从下往上取的
return now;
}
bool check(string x)
{
string num = x;
reverse(x.begin() , x.end()); // 双指针算法也可以写
if (num == x)
return true;
return false;
}
int main()
{
cin >> n;
for (int i = 1; i <= 300; i++)
{
auto ans = base(i * i , n);
if (check(ans))
cout << base(i , n) << ' ' << ans << endl;
}
return 0;
}