您当前的位置: 首页 > 

小天才才

暂无认证

  • 0浏览

    0关注

    168博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【洛谷】【高精度】【字符串】P1015 [NOIP1999 普及组] 回文数

小天才才 发布时间:2021-08-03 21:45:02 ,浏览量:0

题目链接:https://www.luogu.com.cn/problem/P1015

题目描述

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

例如:给定一个十进制数 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!

测试样例
输入
10
87

输出
STEP=4
AC代码
#include
using namespace std;
//假设每一次运算都会进位,则最大会有130位
int n,l,x[150],y[150];
string s;

void add()
{
    //通过数组y进行翻转
    for(int i=0;in>>s;
    l = s.length();
    //初始化
    memset(x,0,sizeof(x));
    memset(y,0,sizeof(y));
    //把字符变为数值
    for(int i=0;i='0' && s[i]30) break;
        add();
    }
    //结果输出
    if(ans            
关注
打赏
1658396332
查看更多评论
0.0396s