[luogu p1015] 回文数

全网首发!Yolov8_obb旋转框训练、测试、推理手把手教学(DOTA1.0数据集map50已达80%) 其中,images/train和images/val放置原始图片文件,labels/train_original和labels/val_original分别放置原始的标签文件,labels/train和labels/val为空,然后运行步骤(3)的代码,运行结束转换后的标签会保存在labels/train和labels/val中,格式如下。(4)新建yolov8-obb.yaml,修改nc和scales,我使用的是yolov8n.(2)构建数据集,安装下面目录格式,其他test可为空,一定要对应。 阅读详情

传送门

题面

题面描述

若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。

例如:给定一个十进制数\(56\),将\(56\)加\(65\)(即把\(56\)从右向左读),得到\(121\)是一个回文数。

又如:对于十进制数\(87\):

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

分析

一道不错的模拟题。
回顾一下题面,程序框架应该是这样:

  1. 输入m
  2. 判断m是否回文,如果是,输出次数并退出
  3. 将m和m的倒序相加,存储到m中
  4. 还没到30次?返回第二步。到了?输出impossible并返回

但是,对于一个100位的整数,我们需要用字符串存入。
那么接下来我们要解决一些问题:

如何判断一个数是否回文?

C++的STL是其臭名昭著的很大的优势,这不,string就提供了reverse函数。(其实string有很多优点,但美中不足的是他必须用臭名昭著的cin读入。)

string a;
string tmp=reverse(a.begin(),a.end());
if(tmp==a) ....

如何进行加法?

高精度是个好东西。
关于更多高精度的知识,请自行搜索。

string add(string a,string b)
{
	int numa[105],numb[105],numc[105];
	int len=a.length(),lenc;
	string ret;
	for(int i=0;i<len;i++)
	{
		numa[len-i]=c_to_i(a[i]);
		numb[len-i]=c_to_i(b[i]);
	}
	int d=0;
	for(lenc=1;lenc<=len;lenc++)
	{
		numc[lenc]=numa[lenc]+numb[lenc]+d;
		d=numc[lenc]/10;
		numc[lenc]%=10;
	}
	numc[lenc]=d;
	while(!numc[lenc]) lenc--;
	for(int i=lenc;i;i--) 
		ret+=i_to_c(numc[i]);
	return ret;
}

注:以上代码中的i_to_c和c_to_i代表整数转字符和字符转整数。

关于进制

本题其实无必要转进制,只要改一下高精度就可以,把进位部分改成:

for(lenc=1;lenc<=len;lenc++)
	{
		numc[lenc]=numa[lenc]+numb[lenc]+d;
		d=numc[lenc]/k;
		numc[lenc]%=k;
	}

k是我定义的进制。
并且在i_to_c和c_to_i函数中要加上对16进制的特殊处理。下面是这两个函数的定义:

int c_to_i(char a)
{
	if(isdigit(a)) return a-'0';
	return a-'A'+10;
}

char i_to_c(int a)
{
	if(a<10) return a+'0';
	return a-10+'A';
}

解决了这几个问题,代码就简单了。

代码

#include <bits/stdc++.h>
using namespace std;
y1
string s;
int n;

string my_reverse(string a)
{
	string tmp=a;
	reverse(tmp.begin(),tmp.end());
	return tmp;
}

bool valid(string a)
{
	return a==my_reverse(a);
} 

int c_to_i(char a)
{
	if(isdigit(a)) return a-'0';
	return a-'A'+10;
}

char i_to_c(int a)
{
	if(a<10) return a+'0';
	return a-10+'A';
}

string add(string a,string b,int k)
{
	int numa[105],numb[105],numc[105];
	int len=a.length(),lenc;
	string ret;
	for(int i=0;i<len;i++)
	{
		numa[len-i]=c_to_i(a[i]);
		numb[len-i]=c_to_i(b[i]);
	}
	int d=0;
	for(lenc=1;lenc<=len;lenc++)
	{
		numc[lenc]=numa[lenc]+numb[lenc]+d;
		d=numc[lenc]/k;
		numc[lenc]%=k;
	}
	numc[lenc]=d;
	while(!numc[lenc]) lenc--;
	for(int i=lenc;i;i--) 
		ret+=i_to_c(numc[i]);
	return ret;
} 

int main()
{
	cin>>n>>s;
	for(int i=0;i<=30;i++)
	{
		if(!valid(s)) s=add(s,my_reverse(s),n);
		else
		{
			printf("STEP=%d\n",i);
			return 0;
		}
	}
	printf("Impossible!\n");
	return 0;
}

哦对了,这里特别提醒一个地方,高精度里的一个微小的部分:int d=0;
你看到他了吗?我当初是这么写的:int d;
由于这个变量在函数内,所以不会自动初始化为0,就因为这个点,我要WA到自闭。

S选手就算了,J选手请特别留意:
这个小问题在Windows环境下测不出来!
在此感谢

评测记录:给了链接自行看吧

over.

在Qt中集成VTK和PCL:实现数据可视化的完整指南 在现代软件开发中,数据可视化至关重要。将VTK(Visualization Toolkit)和PCL(Point Cloud Library)集成到Qt环境里,能为开发者提供强大的可视化解决方案。本文将深入讲解如何在Qt中读取PCL文件,展示VTK模型和PCL数据,适合想要在Qt项目中实现数据可视化的开发者。 阅读详情

相关推荐

电路仿真软件PSIM简介

PSIM的基本使用操作...

qq_55203246的博客 7175

蓝桥杯 ALGO-14 算法训练 回文数

算法训练 回文数 时间限制:1.0s 内存限制:256.0MB 问题描述   若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。   例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数。   又如:对于10进制数87:   STEP1:87+78 = 165 STEP2:165+561 = 726   STEP3:...

荔枝的FM 533

睿尔曼超轻量仿人机械臂-ROS第一篇 启动机械臂的Moveit

本文主要讲述了睿尔曼六轴机械臂在ROS中的功能包配置,及如何根据文件启动Moveit做仿真。

realman_Rop的博客 7489

Vijos 1304题:回文数

若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。

叶琼州的代码小窝 5833

数字后端DRC Violation定位与自动化修复:Innovus与Calibre协同实战

设计规则检查(DRC)是芯片tapeout前确保版图可制造性的关键验证环节。在数字后端流程中,Calibre作为signoff级物理验证工具,会依据代工厂SVRF规则文件对GDS进行严格几何检查;而Innovus则提供快速迭代的in-design DRC反馈。两者协同成为工程师定位violation、保障流片成功的主流工作流。面对成千上万条DRC violation,高效的定位与分类思路、跨工具映射技巧,以及基于Tcl脚本的自动化修复方法,能大幅缩短物理验证周期。本文从DRC的分层定位出发,结合Innovu

weixin_29185167的博客 335

OpenWRT端口转发与NAT环回冲突的排查与解决

本文详细解析了OpenWRT路由器中端口转发与NAT环回功能冲突导致的内网访问故障。通过生活化类比阐明两者工作原理,提供从基础诊断到内核参数调整、LuCI选项配置及手动编写iptables规则的多套解决方案,并给出进阶排查思路,帮助用户彻底解决内网无法通过公网地址访问服务的常见问题。

weixin_29243279的博客 506

noip1999 回文数 (模拟)

A1121. 回文数 时间限制:1.0s   内存限制:256.0MB   总提交次数:702   AC次数:214   平均分:52.96 将本题分享到:            查看未格式化的试题   提交   试题讨论 试题来源   NOIP1999 提高组 问题描述   若一个数(首位不为零)从左向右读与从右向左

把复杂的事情简单描述 4093

YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2023 FasterNet 高效快速的部分卷积块

本文记录的是基于FasterNet的YOLOv11轻量化改进方法研究。FasterNet的网络结构借鉴 CNN 的设计理念,通过提出的PConv减少推理时的计算和内存成本,同时减少通道数并增加部分比例,降低延迟,并通过后续的PWConv来弥补特征信息可能缺失的问题,提高了准确性。本文在替换骨干网络中配置了原论文中的和六种模型,以满足不同的需求。

Limiiiing的博客 2029

蓝桥杯题目练习(回文数)

算法训练VIP 回文数 原题链接:回文数 题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数。 又如:对于10进制数87: STEP1:87+78 = 165 STEP2:165+561 = 726 STEP3:726+627 = 1353 STEP4:13...

122&&113的博客 1156

图神经网络实战(8)——图注意力网络(Graph Attention Networks, GAT)

图注意力网络 (Graph Attention Networks, GAT) 是对图卷积网络 (Graph Convolutional Network, GCN) 的改进,提出了一种通过自注意力 (self-attention) 过程计算的加权因子,而不是使用静态的归一化系数。在本节中,我们介绍了 GAT 架构。通过从线性变换到多头注意力的四个主要步骤,了解了 GAT 的工作原理,并在 NumPy 中从零开始构建了 GAT 层。最后,将 GAT 模型应用于 Cora 和 CiteSeer 数据集。

盼小辉丶的博客 1万+

【论文精读】《Towards Deep Learning Models Resistant to Adversarial Attacks》

本文探讨了深度学习模型在面对对抗性攻击时的脆弱性,并提出了一种基于鲁棒优化的方法来增强神经网络的对抗鲁棒性。通过鞍点优化框架,作者提供了对抗攻击和防御机制的统一视角,并在MNIST和CIFAR-10数据集上验证了其方法的有效性。对抗训练的核心思想是将对抗样本引入训练过程,使模型能够学习到对抗样本的特征,从而提升其鲁棒性。本文通过鞍点优化框架提出了一种基于鲁棒优化的对抗训练方法,显著提升了深度学习模型的对抗鲁棒性。本文为深度学习模型的对抗鲁棒性研究提供了新的理论和实证支持,同时为未来研究指明了方向。

nmdbbzcl的博客 611

Luogu P1015 回文数

题目描述详见Luogu P1015 回文数需要进行N进制的加法,十进制及以下的好说,但十六进制略恶心了。于是还是想到了强大的STL,用vector算高精。有了vector,那么是否回文数也好判断了,从头尾同时进行遍历,判断。对于十六进制,直接读入的时候处理一下,读到A到F直接存成相应的十进制数就好了。#include&lt;iostream&gt; #include&lt;cstdio&gt; #...

qq_18352005的博客 382

(二)OpenClaw-连接即时通讯平台-集成飞书完整配置指南

本文详细介绍了如何将OpenClaw与飞书机器人对接,实现通过飞书聊天窗口下达指令自动执行任务的高效协作模式。主要内容包括:1)OpenClaw服务部署验证和飞书账号准备;2)在飞书开放平台创建企业自建应用、添加机器人能力、获取凭证和开通必要权限;3)OpenClaw服务端的首次配置,包括设置飞书通道参数和启动长连接。文章提供了完整的操作步骤和截图指引,帮助用户快速完成对接配置,实现AI自动化助手功能。

直到世界的尽头 2246

luogu P1015 回文数

P1015 回文数 题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数。 又如:对于10进制数87: STEP1:87+78 = 165 STEP2:165+561 = 726 STEP3:726+627 = 1353 STEP4:1353+3531 ...

anjian3128的专栏 131

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

luogu P1015回文数 模拟

题目链接:https://www.luogu.org/problemnew/show/P1015 题目大意:给一个进制为 nnn 的数 mmm,若经过 kkk 次使得 m[=m+reverse(m)]m[=m+reverse(m)]m[=m+reverse(m)] 为回文数,输出 kkk,若 k&gt;=30k&gt;=30k>=30,则输出 Impossible! #in...

looeyWei的博客 296

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【NOIP】1999真题解析 luogu-P1015 回文数 | GESP四、五级以上可练习

NOIP 1999 普及组真题,主要考察以及。解题的核心是将数字看作字符串处理,在循环累加中验证回文特征。适合GESP四、五级以上考生练习。题目难度⭐⭐☆☆☆,洛谷难度等级普及−。

CoderCoding的博客 205

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

回文数 (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 在这里的一步是指...

xifengcode 362

回文数

P1015 回文数,字符串模拟。

欢迎您的光顾awa 172

洛谷P1015 回文数

题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。 例如:给定一个十进制数5656,将5656加6565(即把5656从右向左读),得到121121是一个回文数。 又如:对于十进制数8787: STEP1:87+78=16587+78=165 STEP2:165+561=726165+561=726 STEP3:726+627=1353726+627=1353 STEP4:1353+3531=48841353+3531=4884 在这里的一步是...

lzx_xzl_______的博客 617

luogu_1015 回文数

#include<bits/stdc++.h>using namespace std;int n,a[1010],t,b[1010];string m;void add(){ for(int i=1;i<=a[0];i++)b[a[0]-i+1]=a[i]; for(int i=1;i<=a[0];i++){ a[i]+=b[i]; a[i+1]+=a[i]/n; a[i...

weixin_30642029的博客 78

【NOIP1999】【Luogu1015】回文数(高精度,模拟)

problem 给定一个n进制的数m 每次进行如下操作:反转(比如把56变成65)后两数相加,得新数。 求最少经过几步可以得到新数为回文数,超过30步输出Impossible! solution 判断回文或者反转一个数可以用STL的reverse。 两n进制数相加模拟高精即可(竖式手算 codes #include<iostream&g...

weixin_30633949的博客 315

【题解】洛谷P1801 黑匣子(堆)

怎么求一个堆内的第k小的值呢?我们可以把问题化为两个堆来解决。 存一个大根堆一个小根堆,小根堆负责读入元素。a数组记录要读的元素,b数组记录当前位置。读入当前的范围内饱含的元素,并把这个元素放到小根堆里,如果大根堆非空(注意!!!)并且大根堆堆顶比小根堆堆顶要大就交换堆顶,最后输出小根堆堆顶,把它堆顶扔到大根堆里,代表已经找到了第i小的数。关于大根堆里的数是否能更新小根堆上面已经操作过了。 ...

Rem_Inory的博客 322

蓝桥杯 算法训练 回文数JAVA

问题描述   若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。   例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数。 又如:对于10进制数87:   STEP1:87+78 = 165 STEP2:165+561 = 726   STEP3:726+627 = 1353 STEP4:1353+3531 = 4884 在这里的一步...

weixin_43824233的博客 1527

一本通-1309-回文数

【题目描述】 若一个数(首位不为零)从左向右读与从右向左读都是一样,我们就将其称之为回文数。例如:给定一个 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=

超级氯化钾的博客 1554
上一篇: [luogu p1996] 约瑟夫问题
下一篇: vmware虚拟机连不上网解决方法
「已注销」
博客等级 码龄7年 10粉丝 170原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值