[洛谷 OJ]P1015 回文数
题目描述
若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。
例如:给定一个十进制数56,将56加65(即把5656从右向左读),得到121是一个回文数。
又如:对于十进制数8787:
STEP1:87+78 = 165
STEP2:165+561 = 726
STEP3:726+627 = 1353
STEP4:1353+3531 = 4884在这里的一步是指进行了一次N进制的加法,上例最少用了4步得到回文数4884。
写一个程序,给定一个N(2 \le N \le 10,N=16)进制数M(100位之内),求最少经过几步可以得到回文数。如果在30步以内(包含30步)不可能得到回文数,则输出
Impossible!
输入格式
两行,分别是N,M。
输出格式
STEP=ans
输入输出样例
输入 #1复制
10 87输出 #1复制
STEP=4
这个题我刚开始觉得它的sum可能会很大,然后就用的大数,结果发现,用String 字符串就可以了,你说神奇不神奇,然后再进行编码的时候要注意以下几点:
1.先求某个数的逆数(我是这样称呼的);
2.将这两个数全部转化为10进制,然后相加;
3.将和转化为相应的进制进行判断;
这样的结果是正确的;
import java.math.BigInteger;
import java.util.Scanner;public class Main {static Scanner sc=new Scanner(System.in);static int N,S; static String M;static char[] ch= {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};static String reverse(String m2) {String m1="";String str=m2+"";for(int i=str.length()-1;i>=0;i--) {m1+=str.charAt(i);}return m1;}static String add(String m2) {// TODO Auto-generated method stubString m1=reverse(m2);long sum1=0;long sum2=0;long sum=0;for(int i=0;i<m2.length();i++) {sum1=sum1*N+(m2.charAt(i)>64?m2.charAt(i)-55:Long.parseLong(m2.charAt(i)+""));}for(int i=0;i<m1.length();i++) {sum2=sum2*N+(m1.charAt(i)>64?m1.charAt(i)-55:Long.parseLong(m1.charAt(i)+""));}sum=sum1+sum2;String str="";while(sum>0) {long dig=sum%N;str+=ch[(int) dig];sum/=N;}return reverse(str);}public static void main(String[] args) {// TODO Auto-generated method stubN=sc.nextInt();S=N;M=sc.next();int ans=0;while(!isH(M)) {if(ans>30) {System.out.println("Impossible!");return;}M=add(M);ans++;}if(ans==0) {ans=1;}System.out.println("STEP="+ans);}static boolean isH(String m2) {// TODO Auto-generated method stubString str=m2+"";boolean flag=true;for(int i=0;i<((str.length()-1)/2+1);i++) {if(!(str.charAt(i)==str.charAt(str.length()-1-i))) {flag=false;}}return flag;}}
[洛谷 OJ]P1015 回文数相关推荐
- 洛谷P1015回文数
题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个十进制数56,将56加65(即把5656从右向左读),得到121是一个回文数. 又如:对于十进制数 ...
- 高精度练习- P1015 回文数
题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个十进制数5656,将5656加6565(即把5656从右向左读),得到121121是一个回文数. ...
- xtu oj 1376 回文数
回文数 题目描述 回文数是指一个没有前导0的数,从左到右的数码和从右到左的数码是一样的.比如说10进制下的"121",这就是一个回文数. 我们将这个概念扩展到b进制,n=∑ki=0 ...
- zzuli OJ 1106: 回文数(函数专题)
Description 一个正整数,如果从左向 右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数.输入两个整数m和n(m<n),输出区间[m,n]之间的回文数. In ...
- 洛谷-P4287 双倍回文(Manacher)
双倍回文 Manacher算法用的还是不够熟悉啊,被卡了好久...一会再写个回文自动机的做法吧 清晰的回文自动机写法 题意:若一个回文串左半部分和有半部分分别为一个回文串,则这个回文串被称为双倍回文串 ...
- 洛谷oj P1045麦森数 高精度快速幂取模及位数求法
题目链接:戳我戳我 我们知道, 的最后一位必定不是0, 则 的位数与 相等. 那么如何来求 的位数呢? 为了不失一般性, 在此直接讨论任意数 的位数: 对于任意大于等于0的实数k, 有 的 ...
- P1015 [NOIP1999 普及组] 回文数 C语言实现
最近在做洛谷的一道回文数的题目时卡住了,但由于笔者只学习了C语言,于是想找一篇C语言写的博客学习一下.但无奈的是大多为C++或Python等语言,而且注释太少,用C++写的有的博客全局变量使用的太多, ...
- 信息学奥赛一本通 1309:【例1.6】回文数(Noip1999) | 洛谷 P1015 [NOIP1999 普及组] 回文数
[题目链接] ybt 1309:[例1.6]回文数(Noip1999) 洛谷 P1015 [NOIP1999 普及组] 回文数 注:两OJ上的问题考察内容相同,但输出要求不同 [题目考点] 1.高精度 ...
- N进制正反累加判回文数(洛谷P1015题题解,Java语言描述)
题目要求 P1015题目链接 分析 开始的时候写了这么一个代码,应该是比较基础的,是十进制的. private static void low() {Scanner scanner = new Sca ...
最新文章
- Unity创建使用操纵杆飞行动画教程
- Buuctf(pwn) jarvisoj_tell_me_something 栈溢出
- Python中使用httpx模块详解
- 复旦大学吴立德《数值优化》、《深度学习》和
- 基于事件驱动架构构建微服务第11部分:持续集成
- 你了解的继承方式html,法定继承、遗嘱继承、遗赠,这三种房产过户方式你了解多少?...
- wordpress主题是php开发的吗,写给想学习wordpress主题开发的朋友们
- 微博多尺度序列推荐算法实践
- 文件那些事儿之一(初稿)
- 前端框架Vue(3)——vue-cli 目录结构
- z11 max android 6.0,努比亚Z11Max 安卓6.0 魅族Flyme6刷机包 最新6.7.12.29R紫火版 20180108更新...
- 搜狗站长平台没有sitemap的接口无法提交sitemap?该怎么提交?【已解决】
- 洛谷P1488 肥猫的游戏
- Nebula Graph性能测试工具——Nebula Bench实践
- 体系结构第1章—基本概念
- 点云平滑之双边滤波适用性分析
- Jhipster 中的 Liquibase 正确使用方法
- AV-TEST杀毒软件能力测试(2018年1月-12月)杀毒软件排名
- django实现商品分类展示
- CCIE和HCIE工程师工资一般多少?
热门文章
- 【Test】[20111011][数论+记忆化搜索+枚举(Heap优化)+SPFA]
- pytoch人工神经网络基础:最简单的分类(softmax回归+交叉熵分类)
- 【企业工程实践】云服务牛刀小试_DayFour
- 开源的在线培训/在线考试/在线网校/企业内训系统介绍
- openwrt--uci指令的使用
- OPPOK7x和oppoa92s哪个好?
- windows10操作系统家庭版,解决启用或关闭windows功能中没有Hyper-v
- 精彩网页设计示例收藏
- 德语语音教学课件下载
- 今天给大家分享使用Scratch做一个猫捉老鼠的游戏!