P1206 [USACO1.2] 回文平方数 Palindromic Squares
题目描述
回文数是指从左向右念和从右向左念都一样的数。如123211232112321就是一个典型的回文数。
给定一个用十进制表示的正整数BBB,输出所有[1,300][1,300][1,300]中,它的平方用BBB进制表示时是回文数的数。
输入格式
共一行,一个单独的正整数BBB。
输出格式
每行两个BBB进制的符合要求的数字,第二个数是第一个数的平方,且第二个数是回文数。
注意大于999的数,用字母表示。如用A表示101010,B表示111111,用第nnn个大写字母表示n+9n+9n+9。
输入输出样例 #1
输入 #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说明/提示
【数据范围】
对于100%100\%100%的数据,2≤B≤202 \le B \le 202≤B≤20
题目翻译来自NOCOW。
USACO Training Section 1.2
#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;// 严格要求 (将long long 类型取别名)stringfunc(ll x,ll n){//当前x转n进制string s="";while(x){ll d=x%n;if(d>=10)s+=char(d-10+'A');elses+=char(d+'0');x/=n;}reverse(s.begin(),s.end());returns;}boolfunc1(string s){//判断字符串是否回文string s1=s;reverse(s.begin(),s.end());if(s==s1){returntrue;}returnfalse;}intmain(){ios::sync_with_stdio(0);// 提高cin、cout的运行速度cin.tie(0);cout.tie(0);ll n;cin>>n;for(ll i=1;i<=300;i++){string s1=func(pow(i,2),n);//求当前数i的平方的n进制字符串string s2=func(i,n);//求当前数i的n进制字符串if(func1(s1)){//如果是当前 i的平方的b进制字符串是回文串 则输出当前数的n进制数 以及当前数平方的n进制数cout<<s2<<" "<<s1<<endl;}}return0;}