试题 算法训练 回文数

简介: 试题 算法训练 回文数

试题 算法训练 回文数

资源限制

内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s

问题描述

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

  例如:给定一个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(其中16进制数字为0-9与A-F),求最少经过几步可以得到回文数。

  如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible!”

输入格式

  两行,N与M

输出格式

  如果能在30步以内得到回文数,输出“STEP=xx”(不含引号),其中xx是步数;否则输出一行”Impossible!”(不含引号)

样例输入

9

87

样例输出

STEP=6

提交代码:

/*
比较坑的地方:在N进制下是否为回文数 
*/
#include<iostream>
#include<cstring>
using namespace std;
int a[10000],b[10000],s[10001];
bool huiwen(int s[], int l)
{
    int i,k;
    k = (l - 1)/2;
    for(i = 0; i <= k; i++){
        if(s[i] != s[l - i -1])
          break;
    }
    if(i == k+1)
      return 1;
    else
    return 0;
}
void inverse(int s[], int l)
{
  int i;
    memset(a, 0, sizeof(a));
    memset(b, 0, sizeof(b));
    for(i = 0; i < l; i++){
        a[i] = s[i];
        b[l - i -1] = a[i];
        }
    }
int main()
{
    int n,l,i,count = 0;
    string m;
    cin>>n>>m;
    l = m.size();
    for(i = 0; i < l; i++){
        if(m[i] >= 'A' && m[i] <= 'Z')
        a[i] = m[i] - 'A' + 10;
        else
        a[i] = m[i] - '0';
        s[i] = a[i];
        b[l - i -1] = a[i];
    }
    while(!huiwen(s, l) && count <= 30){
      count++;
      memset(s, 0, sizeof(s));
      for(i = 0; i < l; i++){
        s[i] += a[i] + b[i];
        s[i+1] += s[i]/n;
        s[i] = s[i]%n;
      }
      if(s[l] != 0)
        l = l + 1;
      inverse(s, l);
  }
    if(count <= 30)
      cout<<"STEP="<<count<<endl;
    else
    cout<<"Impossible!"<<endl;
    return 0;
}
相关文章
|
7月前
|
算法 Java Serverless
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-444 算法训练 求和问题
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-444 算法训练 求和问题
60 1
|
2月前
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
蓝桥杯Python编程练习题的集合,涵盖了从基础到提高的多个算法题目及其解答。
82 3
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
|
1月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
2月前
|
机器学习/深度学习 算法 决策智能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
|
2月前
|
算法 Java C++
【贪心算法】算法训练 ALGO-1003 礼物(C/C++)
【贪心算法】算法训练 ALGO-1003 礼物(C/C++)
【贪心算法】算法训练 ALGO-1003 礼物(C/C++)
|
2月前
|
算法 C++
蓝桥 算法训练 共线(C++)
蓝桥 算法训练 共线(C++)
|
5月前
knn增强数据训练
【7月更文挑战第27天】
40 10
|
5月前
|
数据采集 编解码 人工智能
破解ChatGPT惊人耗电!DeepMind新算法训练提效13倍,能耗暴降10倍
【7月更文挑战第19天】DeepMind的JEST算法革新AI训练,提升效率13倍,节能10倍。通过联合数据批次选择,预训练指导及多分辨率训练,优化资源利用,降低能耗。实验显示性能提升,达到SOTA水平,但实施需大量资源,依赖优质参考模型。[论文链接](https://arxiv.org/pdf/2406.17711)
73 10
|
5月前
knn增强数据训练
【7月更文挑战第28天】
46 2
|
5月前
|
人工智能 边缘计算 算法
破解ChatGPT惊人耗电!DeepMind新算法训练提效13倍,能耗暴降10倍
【7月更文挑战第20天】DeepMind unveils Switch Transformer, revolutionizing AI energy consumption. This novel algorithm boosts training efficiency by 13x and slashes energy use by 10x compared to ChatGPT, marking a significant leap towards eco-friendly AI.
54 2