USACO-Section1.3 Palindromic Squares (进制转换和回文数)
2017-5-27
题目描述
十进制数1到300的平方用N进制表示,若为回文数,则输出
解答
大体就是进制转换以及判断回文数的结合
代码
/*
ID: 18795871
PROG: palsquare
LANG: C++
*/
#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;ifstream fin("palsquare.in");
ofstream fout("palsquare.out");const int N = 17;
char x[21]="0123456789ABCDEFGHIJ";
int n;
char c[N+1];void cal(int a){//将十进制a用n进制表示 char d[N+1];int i=0;while (a){d[i++]=x[a%n];a/=n;} for (int j=0;j<i;j++) c[j]=d[i-j-1];c[i]='\0';
}bool res(char *a){char b[N+1];int l=strlen(a);for (int i=0;i<l;i++) b[l-i-1]=a[i];b[l]='\0';a[l]='\0';if (strcmp(a,b)==0) return true;return false;
}int main()
{fin>>n;for (int i=1;i<=300;i++){cal(i*i);if (res(c)){cal(i);fout<<c<<" ";cal(i*i);fout<<c<<endl;}}return 0;
}
说一下需要注意的地方:
(1)注意对十进制以上字符的判断,A代表10,B代表11,以此类推。
(2)注意输出的是B进制的两个数,原数和它的平方。
/*
ID: 18795871
PROG: palsquare
LANG: C++
*/
#include<iostream>
#include<fstream>
using namespace std;ifstream fin("palsquare.in");
ofstream fout("palsquare.out");int n;bool isPal(char p[100],int l){if (l==1) return true;for (int i=0;i<l/2;i++){if (p[i]!=p[l-i-1]) return false;}return true;
}bool cal(int p){char c1[100],c2[100];int k1=p,k2=p*p,cnt1=0,cnt2=0;while (k1){if (k1%n<10) c1[cnt1]=k1%n+'0';else c1[cnt1]=(k1%n-10)+'A';k1=k1/n;cnt1++;}while (k2){if (k2%n<10) c2[cnt2]=k2%n+'0';else c2[cnt2]=(k2%n-10)+'A';k2=k2/n;cnt2++;}if (!isPal(c2,cnt2)) return false;for (int i=cnt1-1;i>=0;i--) fout<<c1[i];fout<<" ";for (int i=cnt2-1;i>=0;i--) fout<<c2[i];fout<<endl;return true;
}int main(){while (fin>>n){for (int i=1;i<=300;i++){if (!cal(i)) continue;}}return 0;
}
USACO-Section1.3 Palindromic Squares (进制转换和回文数)相关推荐
- USACO-Section1.3 Dual Palindromes (进制转换和回文数)
2017-5-27 题目描述 求出大于S的至少在两种进制下表示是回文数的N个数 解答 进制转换与判断回文数的结合 代码 /* ID: 18795871 PROG: dualpal LANG: C++ ...
- PAT甲级1019 General Palindromic Number:[C++题解]进制位、回文数、vector来做
文章目录 题目分析 题目链接 题目分析 ac代码 #include<bits/stdc++.h> using namespace std;//判回文数 bool check(vector& ...
- c++进制转换_一文了解进制之间的原理和转换
点击这段文字: 获取2020年,最强Python学习资料 进制这块,可以做简单的了解.生活中我们使用的数字都是十进制的,而二进制是机器能够识别的最直接的语言.但是二进制又太大,记录起来非常的不方便.所 ...
- PAT乙级(Basic Level)练习题 进制回文数
题目描述 如果一个数字从左边读和从右边读一样,那么这个数字就是一个回文数.例如32123就是一个回文数:17在某种意义上也是一个回文数,因为它的二进制型式--10001--是一个回文数. 请你帮忙开发 ...
- PAT练习 进制回文数(进制问题+字符串处理)
题目描述: 如果一个数字从左边读和从右边读一样,那么这个数字就是一个回文数.例如32123就是一个回文数:17在某种意义上也是一个回文数,因为它的二进制型式--10001--是一个回文数. 请你帮忙开 ...
- 【PAT】进制回文数
题目描述 如果一个数字从左边读和从右边读一样,那么这个数字就是一个回文数.例如32123就是一个回文数:17在某种意义上也是一个回文数,因为它的二进制型式--10001--是一个回文数. 请你帮忙开发 ...
- 【新人】C++小白刷题系列0009进制回文数
题目描述 如果一个数字从左边读和从右边读一样,那么这个数字就是一个回文数.例如32123就是一个回文数:17在某种意义上也是一个回文数,因为它的二进制型式--10001--是一个回文数. 请你帮忙开发 ...
- 10进制转换成其他进制-短除法
将10进制下的n转换成b进制下的数. 代码如下: char get(int x) {if (x<=9) return x+'0';return x-10+'A'; }string base(in ...
- PREV-55 小计算器 (进制转换)
题目: 几个需要注意的点: CLEAR指令:重制计算,相当于计算机中的C按钮 CHANGE K指令:改变的是整个运算的进制,不是单独改变某个数的进制,如输入1024后,改变为二进制再加上100000( ...
最新文章
- 可视化篇(四)——— python绘制双y轴、箱线图、概率分布三种图形及案例
- Qt QPushButton圆形图片设置为背景
- [收藏]REST -维基百科
- 三星s4 android 6.0吗,快了 三星手机适配Android 6.0时间公布
- Apache cxf JaxRs基本应用
- 深度学习图像融合_基于深度学习的图像超分辨率最新进展与趋势【附PDF】
- 下岗职工能不能提前退休?怎样才能提前退休?
- ×××技术漫谈之IPSec(附MPLS)
- 苹果登陆qq邮箱服务器,腾讯QQ邮箱配置,在苹果邮件配置和第三方spark登录qq邮箱账号...
- iconfont-阿里巴巴矢量图标库的使用方法
- 怎么把c盘的软件移到d盘?
- 电烙铁使用方法总结集合
- 月薪50K的测试工程师,要求原来是这样!
- Oracle触发器分类及使用
- 从小白开始自学数据结构——第十二天【图及其基本概念和邻接表的定义】
- 如何使用Gulp完成项目的自动化构建
- 沈阳师范大学大二上数据结构第一章绪论(选择+单选+填空))
- Qt的paint函数重写,以及QPaint给一条线绘制箭头
- 数据结构与算法教程,让数据结构不再难懂,让算法不再难写
- python制作圣诞贺卡_CodeCards:在线创建你的HTML5圣诞贺卡