luogu P1015 回文数
题目描述:
若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。
例如:给定一个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
难度:简单
这道题主要考查两点:reverse和check。
将数存成数组的形式(也就是高精度的写法),reverse就很好写(swap一下)。
源代码如下:
/*
About: luogu_P1015_回文数
Auther: kongse_qi
Date:2017/04/21
*/
#include <bits/stdc++.h>
#define maxn 10005
using namespace std;
int Base, times;
string n;
struct qi
{
int len, s[maxn], base;
qi ()//初始化结构体
{
memset(s, 0, sizeof s);
len = 0;
base = Base;
}
qi (string a, int b)//也是初始化(用于输入)
{
len = a.size();
for(int i = 0; i < len; i++)
{
if(a[len-1-i] >= 'A')
{
s[i] = a[len-i-1] -'A'+10;
}
else
{
s[i] = a[len-i-1] -'0';
}
}
base = b;
}
qi operator + (const qi &b)//+
{
qi c;
c.len = 0;
for(int i = 0, g = 0; g || i < max(len, b.len); i++)
{
int x = g;
if(i < len) x += s[i];
if(i < b.len) x += b.s[i];
c.s[c.len++] = x % base;
g = x / base;
}
return c;
}
qi operator = (const qi &x)//复制
{
len = x.len;
for(unsigned i = 0; i != len; ++i)
{
s[i] = x.s[i];
}
base = x.base;
}
qi operator += (const qi &x)//就是做上面写好的"+"
{
*this = *this+x;
return *this;
}
void reverse()//反转
{
for(unsigned i = 0; i != len/2; ++i)
{
swap(s[i], s[len-1-i]);
}
return ;
}
}x,y;
void Init()
{
scanf("%d", &Base);
cin >> n;
x = qi(n, Base);
return ;
}
bool check(const qi &a)
{
for(unsigned i = 0; i != a.len/2; ++i)
{
if(a.s[i] != a.s[a.len-i-1]) return false;
}
return true;
}
void Add()
{
do
{
y = x;//copy
x.reverse();//结构体函数
x += y;
++times;
}
while(!check(x) && times < 31);
if(times < 31)
{
cout << "STEP=" << times;
}
else
{
cout <<"Impossible!";
}
return ;
}
int main()
{
Init();
Add();
return 0;
}
自此完成。
箜瑟_qi 2017.04.21 12:17
luogu P1015 回文数的更多相关文章
- 洛谷 P1015 回文数 Label:续命模拟QAQ
题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数. 又如:对于10进制数 ...
- P1015回文数
传送 回文数的判断有个神奇的公式: g[i]==g[leng+-i] 其中leng为字符串长度,看每个g[i]是否都满足它,若满足,就是回文数 ps:洛谷的impossible有毒,必须得复制题干中的 ...
- Java实现 洛谷 P1015 回文数(N进制回文数)
输入输出样例 输入样例#1: 10 87 输出样例#1: STEP=4 import java.util.Scanner; public class 回文数2 { public static void ...
- 洛谷 P1015 回文数
#include<iostream> #include<cstdio> #include<cmath> #include<string> #includ ...
- P1015 回文数解题思路(非原创)
测试 #include<bits/stdc++.h> using namespace std; int n,m,step; string nn; int len,nex; bool dfs ...
- 【洛谷p1015】【一本通p1309】回文数(noip1999)
(过了这个题灰常灰常开心) 好像前两道忘记了传送门: 回文数[传送门] 洛谷算法标签: 其实还有高精度 这个题困死在了十六进制,后来想了想,我们在c[i]中存入一个大于十的数之前的程序也可以实现回文( ...
- P1015 [NOIP1999 普及组] 回文数
点击查看题目 题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个十进制数 5656,将 5656 加 6565(即把 5656 从右向左读),得到 ...
- 洛谷—— P1609 最小回文数
https://www.luogu.org/problemnew/show/1609 题目描述 回文数是从左向右读和从右向左读结果一样的数字串. 例如:121.44 和3是回文数,175和36不是. ...
- hdu1282回文数猜想
Problem Description 一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数.任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其 ...
随机推荐
- IOS百度地图之--->第一篇《环境配置与基本使用》
Ios 百度地图SDK简易使用说明:http://developer.baidu.com/map/index.php?title=iossdk 先道歉:对于原来上传的Demo我很抱歉,什么都没有,也没 ...
- 手动es6编译es5(命令行)
package.json:"devDependencies": { "babel-cli": "^6.18.0", "babel- ...
- Android 中基于 Binder的进程间通信
摘要:对 Binder 工作机制进行了分析. 首先简述 Android 中 Binder 机制与传统的 Linux 进程间的通信比较,接着对基于 Binder 进程间通信的过程分析 最后结合开发实例 ...
- JS 数组及函数
数组 定义 Array(1,3.14,"aa") 给数据 Array(5) 给长度 [1 ...
- CDN,你了解多少?
大家对CDN并不陌生,工作中或多或少都有所接触,最近也有人问到,在此对CDN相关概念和流程做下总结,希望还能对其他朋友也有所帮助. 一.什么是CDN 维基百科上是这样定义的: CDN:内容分发网络(C ...
- .NET Core开源组件:后台任务利器之Hangfire
一.简述 Hangfire作为一款高人气且容易上手的分布式后台执行服务,支持多种数据库.在.net core的环境中,由Core自带的DI管理着生命周期,免去了在NF4.X环境中配置always ru ...
- h5开发app之在线生成二维码
h5通过jquery和qrcode在线生成二维码 首先我们需要下载一个qrcode.js文件,然后依次引入jquery和qrcode文件. 1.创建一个输入框以便做演示使用: <input id ...
- OOP的完美点缀—AOP之SpringAOP实现原理
OOP的完美点缀-AOP之SpringAOP实现原理 前言 OOP与AOP OOP(Object Oriented Programming,面向对象编程),通过封装.继承将程序抽象为各个层次的对象,进 ...
- ngrok把本地主机映射到公网域名
这两天又要搞微信项目,然后我下载了一个QQ浏览器,搜索微信调试工具,我再搜,再搜,搜不出来,问了下客服,暂时下架了,好吧! 我上网搜了一下,就找到了 ngrok 这个东西,它也可以把你本地主机映射到 ...
- kindeditor修改图片上传路径-使用webapi上传图片到图片服务器
kindeditor是一个非常好用的富文本编辑器,它的简单使用我就不再介绍了. 在这里我着重介绍一些使用kindeditor修改图片上传路径并通过webapi上传图片到图片服务器的方案. 因为我使用的 ...