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 (进制转换和回文数)相关推荐

  1. USACO-Section1.3 Dual Palindromes (进制转换和回文数)

    2017-5-27 题目描述 求出大于S的至少在两种进制下表示是回文数的N个数 解答 进制转换与判断回文数的结合 代码 /* ID: 18795871 PROG: dualpal LANG: C++ ...

  2. PAT甲级1019 General Palindromic Number:[C++题解]进制位、回文数、vector来做

    文章目录 题目分析 题目链接 题目分析 ac代码 #include<bits/stdc++.h> using namespace std;//判回文数 bool check(vector& ...

  3. c++进制转换_一文了解进制之间的原理和转换

    点击这段文字: 获取2020年,最强Python学习资料 进制这块,可以做简单的了解.生活中我们使用的数字都是十进制的,而二进制是机器能够识别的最直接的语言.但是二进制又太大,记录起来非常的不方便.所 ...

  4. PAT乙级(Basic Level)练习题 进制回文数

    题目描述 如果一个数字从左边读和从右边读一样,那么这个数字就是一个回文数.例如32123就是一个回文数:17在某种意义上也是一个回文数,因为它的二进制型式--10001--是一个回文数. 请你帮忙开发 ...

  5. PAT练习 进制回文数(进制问题+字符串处理)

    题目描述: 如果一个数字从左边读和从右边读一样,那么这个数字就是一个回文数.例如32123就是一个回文数:17在某种意义上也是一个回文数,因为它的二进制型式--10001--是一个回文数. 请你帮忙开 ...

  6. 【PAT】进制回文数

    题目描述 如果一个数字从左边读和从右边读一样,那么这个数字就是一个回文数.例如32123就是一个回文数:17在某种意义上也是一个回文数,因为它的二进制型式--10001--是一个回文数. 请你帮忙开发 ...

  7. 【新人】C++小白刷题系列0009进制回文数

    题目描述 如果一个数字从左边读和从右边读一样,那么这个数字就是一个回文数.例如32123就是一个回文数:17在某种意义上也是一个回文数,因为它的二进制型式--10001--是一个回文数. 请你帮忙开发 ...

  8. 10进制转换成其他进制-短除法

    将10进制下的n转换成b进制下的数. 代码如下: char get(int x) {if (x<=9) return x+'0';return x-10+'A'; }string base(in ...

  9. PREV-55 小计算器 (进制转换)

    题目: 几个需要注意的点: CLEAR指令:重制计算,相当于计算机中的C按钮 CHANGE K指令:改变的是整个运算的进制,不是单独改变某个数的进制,如输入1024后,改变为二进制再加上100000( ...

最新文章

  1. 可视化篇(四)——— python绘制双y轴、箱线图、概率分布三种图形及案例
  2. Qt QPushButton圆形图片设置为背景
  3. [收藏]REST -维基百科
  4. 三星s4 android 6.0吗,快了 三星手机适配Android 6.0时间公布
  5. Apache cxf JaxRs基本应用
  6. 深度学习图像融合_基于深度学习的图像超分辨率最新进展与趋势【附PDF】
  7. 下岗职工能不能提前退休?怎样才能提前退休?
  8. ×××技术漫谈之IPSec(附MPLS)
  9. 苹果登陆qq邮箱服务器,腾讯QQ邮箱配置,在苹果邮件配置和第三方spark登录qq邮箱账号...
  10. iconfont-阿里巴巴矢量图标库的使用方法
  11. 怎么把c盘的软件移到d盘?
  12. 电烙铁使用方法总结集合
  13. 月薪50K的测试工程师,要求原来是这样!
  14. Oracle触发器分类及使用
  15. 从小白开始自学数据结构——第十二天【图及其基本概念和邻接表的定义】
  16. 如何使用Gulp完成项目的自动化构建
  17. 沈阳师范大学大二上数据结构第一章绪论(选择+单选+填空))
  18. Qt的paint函数重写,以及QPaint给一条线绘制箭头
  19. 数据结构与算法教程,让数据结构不再难懂,让算法不再难写
  20. python制作圣诞贺卡_CodeCards:在线创建你的HTML5圣诞贺卡

热门文章

  1. C++中在浏览器打开html文件
  2. 这么做科研你也能成功!
  3. 摸鱼也要讲究方法:工作学习中玩手机并不能缓解无聊和疲劳
  4. 量子算法入门书籍推荐
  5. 第58课 百钱买百鸡(完整) 3.完善程序 (《小学生C++趣味编程》)
  6. 2017年最新的全国省市sql数据
  7. 计算机网络课程设计之电子邮件客户端程序设计与实现
  8. Qt学习之Qt基础入门(下)
  9. Web前端笔记-vue cli中使用echarts加载geo地图
  10. Qt工作笔记-第三种方法在QGraphics上写文本