luogu10125回文数[noip1999 Day1 T1]
题目描述
若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。
例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数。
又如:对于10进制数87:
STEP1:87+78 = 165 STEP2:165+561 = 726
STEP3:726+627 = 1353 STEP4:1353+3531 = 4884
在这里的一步是指进行了一次N进制的加法,上例最少用了4步得到回文数4884。
写一个程序,给定一个N(2<=N<=10,N=16)进制数M(100位之内),求最少经过几步可以得到回文数。如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible!”
输入输出格式
输入格式:
两行,分别是N,M。
输出格式:
STEP=ans
输入输出样例
10
87
STEP=4
思路:暴力枚举30次,再仍上高精度加法(将mod 10 改成 mod N即可)。
注意事项:单纯思路有点简单了,说说要注意的地方吧,这题确实有一些地方会让人卡住。
1)注意读入后,将字符串数组转化为int型数组时,要考虑处理16进制数的情况,所以判断该字符是否是字母,若是,转化成10~15(16进制下的A~F)
2)最开始时要判断不需要头尾相加时就已经是回文数的情况。
#include<cstdio>
#include<cstring>
using namespace std;
int n,len,a[11111],b[11111],c[11111];
bool jud(int *X)
{
for(int i=1;i<=len/2;i++)
if(X[i]!=X[len-i+1])return 0;
return 1;
}
void add_num()
{
int x=0;
for(int i=1;i<=len;i++){
x+=a[i]+b[i];
c[i]+=x%n;
x/=n;
}
while(x){c[++len]=x%n;x/=n;}
}
void solve()
{
if(jud(a)){puts("STEP=0");return;}
for(int k=1;k<=30;k++){
memset(c,0,sizeof(c));
for(int i=1;i<=len;i++)
b[i]=a[len-i+1];
add_num();
if(jud(c)){printf("STEP=%d\n",k);return;}
for(int i=1;i<=len;i++)
a[i]=c[i];
}
puts("Impossible!");
}
int main()
{
char cr[111];
scanf("%d%s",&n,cr);
len=strlen(cr);
for(int i=0;i<len;i++){
if('0'<=cr[i]&&cr[i]<='9')
a[len-i]=cr[i]-48;
if('A'<=cr[i]&&cr[i]<='Z')
a[len-i]=cr[i]-55;
}
solve();
return 0;
}
luogu10125回文数[noip1999 Day1 T1]的更多相关文章
- 1309:【例1.6】回文数(Noip1999)
传送门:http://ybt.ssoier.cn:8088/problem_show.php?pid=1309 [题目描述] 若一个数(首位不为零)从左向右读与从右向左读都是一样,我们就将其称之为回文 ...
- 【洛谷p1015】【一本通p1309】回文数(noip1999)
(过了这个题灰常灰常开心) 好像前两道忘记了传送门: 回文数[传送门] 洛谷算法标签: 其实还有高精度 这个题困死在了十六进制,后来想了想,我们在c[i]中存入一个大于十的数之前的程序也可以实现回文( ...
- P1015 [NOIP1999 普及组] 回文数
点击查看题目 题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个十进制数 5656,将 5656 加 6565(即把 5656 从右向左读),得到 ...
- Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全 C# 算法题系列(二) 各位相加、整数反转、回文数、罗马数字转整数 C# 算法题系列(一) 两数之和、无重复字符的最长子串 DateTime Tips c#发送邮件,可发送多个附件 MVC图片上传详解
Newtonsoft.Json C# Json序列化和反序列化工具的使用.类型方法大全 Newtonsoft.Json Newtonsoft.Json 是.Net平台操作Json的工具,他的介绍就 ...
- leetcode-479-Largest Palindrome Product(找到两个乘数相乘得到的最大的回文数)
题目描述: Find the largest palindrome made from the product of two n-digit numbers. Since the result cou ...
- 算法笔记_038:特殊回文数(Java)
目录 1 问题描述 2 解决方案 2.1 80分解法 2.2 网友标答解法 1 问题描述 问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这 ...
- hdu1282回文数猜想
Problem Description 一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数.任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其 ...
- C语言 · 特殊回文数
问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n . 输入格式 输入一行,包含一个正整数n. 输 ...
- Java判断回文数算法简单实现
好久没写java的代码了, 今天闲来无事写段java的代码,算是为新的一年磨磨刀,开个头,算法是Java判断回文数算法简单实现,基本思想是利用字符串对应位置比较,如果所有可能位置都满足要求,则输入的是 ...
随机推荐
- JavaScript异步机制
单线程异步执行的JavaScript JavaScript是单线程异步执行的,单线程意味着代码在任务队列中会按照顺序一个接一个的执行.异步代表JavaScript代码在任务队列中的顺序并不完全等同于代 ...
- Linux机器24项安全合规设置
工作的一些内容,这是中国移动集团当前linux机器安全合规标准,找了点时间将其归类,并查了一些资料,每项配置是什么意思,不仅要知其然,还要知其所以然.好记性不如烂笔头. 1. 检查FTP配置-限制用 ...
- SharePoint2007:解决第二回收站大数据无法删除问题
Emptying the Second Stage Recycle Bin in SharePoint 2007 Look in your second stage recycle bin in ...
- 2015年Java开发岗位面试题归类
一.Java基础 1. String类为什么是final的. 2. HashMap的源码,实现原理,底层结构. 3. 说说你知道的几个Java集合类:list.set.queue.map实现类咯... ...
- OC中.pch文件的解释
在IOS开发的项目中有一个Prefix.pch,.pch文件是什么? Prefix.pch:扩展名.pch表示"precompiled header",这是一个你工程要用到的 ...
- Android Studio教程--给Android Studio安装Genymotion插件
打开Android Studio,依次[File]-[Settings] 在打开的settings界面里找到plugins设置项,点击右侧的“Browser..”按钮 在搜索栏里输入genymotio ...
- 自动化部署与统一安装升级 - 类ansible工具 udeploy0.3版本发布 (更新时间2014-12-24)
下载地址: unifyDeploy0.1版本 unifyDeploy0.2版本 unifyDeploy0.3版本 (更新时间2014-07-25) 自动化部署与统一安装升级,适用于多资 ...
- 教你怎么检测Heartbleed OpenSSL漏洞
Heartbleed错误是一个严重的漏洞.这个弱点可以窃取信息,在正常情况下,由SSL / TLS加密保护互联网.Heartbleed错误允许任何人在互联网上阅读系统的内存保护脆弱的OpenSSL的软 ...
- 学习 HTML5-页面结构(1)
缘起 2014年10月29日,万维网联盟宣布,经过几乎8年的艰辛努力,HTML5标准规范终于最终制定完成了,并已公开发布. 而HTML5的草稿版本在13年就已经放出.作为一个有追求的程序猿这次想赶一次 ...
- MVC WebAPI 三层分布式框架开发
版权声明:本文为博主原创文章,未经博主允许不得转载. 前言:SOA(面向服务的架构)是目前企业应用开发过程中普遍采用的技术,基于MVC WebAPI三层分布式框架开发,以此适用于企业信息系统的业务处理 ...