前言:
而今朋友们对“squares是什么意思怎么读”都比较看重,看官们都想要学习一些“squares是什么意思怎么读”的相关内容。那么小编在网上汇集了一些有关“squares是什么意思怎么读””的相关资讯,希望兄弟们能喜欢,看官们快快来了解一下吧!学习C++从娃娃抓起!记录下USACO(美国信息学奥赛)备考学习过程中的题目,记录每一个瞬间。
附上汇总贴:USACO备考冲刺必刷题 | 汇总-CSDN博客
【题目描述】
回文数是指从左向右念和从右向左念都一样的数。如 12321 就是一个典型的回文数。
给定一个用十进制表示的正整数 B,输出所有 [1,300] 中,它的平方用 B 进制表示时是回文数的数。
【输入】
共一行,一个单独的正整数 B。
【输出】
每行两个 B 进制的符合要求的数字,第二个数是第一个数的平方,且第二个数是回文数。
注意大于 9 的数,用字母表示。如用 A 表示 10,B 表示 11,用第 n 个大写字母表示 n+9。
【输入样例】
10
【输出样例】
1 12 43 911 12122 48426 676101 10201111 12321121 14641202 40804212 44944264 69696
【代码详解】
#include <bits/stdc++.h>using namespace std;int k, t;string s1, s2;string dtok(int t, int k) // 十进制转k进制模板{ string ans = ""; // 定义空字符串 while (t>0) { // 使用数位拆分思路,当t不为0时 int x = t % k; // 除以k,得到k进制的余数 if (x<10) ans = char(x+'0') + ans; // 拼接到ans字符串的前面(注意不是追加到后面) else ans = char(x-10+'A') + ans; // 对于大于10的,转为大写字母 t = t / k; // 更新t为整数部分 } if (ans.empty()) ans = "0"; // 特判t为0时,直接返回0 return ans; // 返回拼接后的字符串}bool isPal(string s) { // 回文字符串的判断 for (int i=0; i<s.size(); i++) { // 从头开始遍历 if (s[i]!=s[s.size()-1-i]) { // 逐位比较,如果遇到不相等的,就返回false return false; } } return true; // 遍历完还没false的就返回true}int main(){ cin >> k; // 输入k(不用b是因为方便记忆十进制转k进制模板) for (int i=1; i<=300; i++) { // 从1遍历至300 t = i*i; // 得到平方数 s1 = dtok(i, k); // 将i转为B进制 s2 = dtok(t, k); // 将平方数转为B进制 if (isPal(s2)) { // 判断平方数(字符串)是否为回文数(字符串) cout << s1 << " " << s2 << endl; // 如果是,则打印B进制的i和平方数 } } return 0;}
【运行结果】
101 12 43 911 12122 48426 676101 10201111 12321121 14641202 40804212 44944264 69696
标签: #squares是什么意思怎么读