当前位置: 首页 > news >正文

P1015 [NOIP1999 普及组] 回文数

题目传送门

题目描述

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

例如:给定一个十进制数 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≤N≤10 或 N=16)进制数 M(100 位之内),求最少经过几步可以得到回文数。如果在 30 步以内(包含 30 步)不可能得到回文数,则输出 Impossible!

输入格式

两行,分别是 N,M。

输出格式

如果能在 30 步以内得到回文数,输出格式形如 STEP=ans,其中 ans 为最少得到回文数的步数。

否则输出 Impossible!

输入输出样例

输入 #1

10
87

输出 #1

STEP=4

 思路

既然是N进制数

请把高精加中的——%10改为%n

请把高精加中的——/10改为/n

其他运算方式不变

这题需要会高精加高精反转高精判断回文数数组存高精度

#include<bits/stdc++.h>
using namespace std;
int n,q[1000001],l,w[1000001],s;
string m;
void t(int j)
{for(int i=m.size()-1;i>=0;i--){if(m[i]>='0'&&m[i]<='9'){q[++j]=m[i]-'0';}else{q[++j]=m[i]-'A'+10;}}
}
void d(int a[105],int b[105])
{for(int i=1;i<=l;i++){a[i]+=b[i];a[i+1]+=a[i]/n;a[i]%=n;}if(a[l+1]>0)l++;
}
bool f(int a[105])
{int ln=l,i=1,j=l;while(ln--){if(ln<l/2){break;}if(a[i]!=a[j]){return false;}i++;j--;}return true;
}
void e(int a[105],int j)
{for(int i=l;i>=1;i--){w[++j]=a[i];}
}
int main()
{cin>>n>>m;t(0);l=m.size();while(!f(q)){e(q,0);d(q,w);s++;if(s>30){break;}}if(s>30){cout<<"Impossible!";}else{cout<<"STEP="<<s;}return 0;
}

 如有错误,欢迎大家评论区指出!感谢!

http://www.lryc.cn/news/307652.html

相关文章:

  • 【MATLAB】兔子机器人动力学模型解读(simulink中的simscape的各模块介绍)
  • 小程序配置服务器域名
  • 探究全链路压力测试的含义与重要性
  • 代码随想录算法训练营day64 || 84. 柱状图中最大的矩形
  • 图的简单介绍
  • 【C#小知识】c#中的delegate(委托)和event(事件)
  • 车规级存储芯片SPI NOR Flash
  • CSS轻松学:简单易懂的CSS基础指南
  • 06 Qt自绘组件:Switch动画开关组件
  • 大语言模型LLM分布式训练:大规模数据集上的并行技术全景探索(LLM系列03)
  • 98.验证二叉搜索树
  • 2月21日,每日信息差
  • android.text.BoringLayout.isBoring 的 NullPointerException
  • C++ 高频考点
  • Ubuntu安装SVN服务并结合内网穿透实现公网访问本地存储文件
  • 2月20日,每日信息差
  • Visual Studio清单作用
  • Java中的==和equals()方法的区别是?hashCode()和equals()的关系是什么?
  • yaml-cpp开源库使用
  • 【C++私房菜】序列式容器的迭代器失效问题
  • MySQL 篇-深入了解 DML、DQL 语言(二)
  • 端智能:面向手机计算环境的端云协同AI技术创新
  • PHP函数 “password_hash“ 哈希密码
  • 第十一天-Excel的操作
  • 【java任意文件漏洞修复,使用文件魔数解决】
  • LeetCode 热题 100 | 二叉树(二)
  • mini-spring|定义标记类型Aware接口,实现感知容器对象
  • 83. 删除排序链表中的重复元素
  • 贪心算法
  • MySQL基本知识