问题 1161: 【回文数(二)】

时间限制: 1Sec 内存限制: 128MB 提交: 133 解决: 51

题目描述

若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。 
例如:给定一个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<=16)进制数M,求最少经过几步可以得到回文数。如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible!”

输入

共两行 
第一行为进制数N(2<=N<=16) 
第二行为N进制数M(0<=M<=maxlongint)

输出

共一行,为“STEP=经过的步数”或“Impossible!”

样例输入
9
87
样例输出

STEP=6

个人参考源代码:

#include<iostream>
#include<string.h>
using namespace std;
char v[16];int N;char M[10];
int value(char a)
{
    if(a>='0'&&a<='9')return a-'0';
    else return a-'A';
}
void add(char *s1,char *s2)
{
    int len=0;while(s1[len]!='\0')len++;
    char result[10];int carry=0;
    for(int i=0;i<len;i++)
    {
        result[i]=v[(value(s1[i])+value(s2[i])+carry)%N];
        if((value(s1[i])+value(s2[i])+carry)>=N)carry=1;
        else carry=0;
    }
    if(carry){result[len]='1';result[len+1]='\0';}
    else result[len]='\0';
    strcpy(s1,result);
    strrev(s1);
}
bool ok(char *M)
{
    char t[10];
    strcpy(t,M);
    strrev(t);
    if(strcmp(t,M)==0)return true;
    else return false;
}
int main()
{
    for(int i=0;i<=9;i++)v[i]='0'+i;
    for(int i=10;i<16;i++)v[i]='A'+i-10;
    cin>>N;cin>>M;
    int count=0;
    while(!ok(M))
    {
        f(M);
        count++;
    }
    if(count>30)cout<<"Impossible!"<<endl;
    else cout<<"STEP="<<count<<endl;
    return 0;
}

回文数二(acm训练)的更多相关文章

  1. Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全 C# 算法题系列(二) 各位相加、整数反转、回文数、罗马数字转整数 C# 算法题系列(一) 两数之和、无重复字符的最长子串 DateTime Tips c#发送邮件,可发送多个附件 MVC图片上传详解

    Newtonsoft.Json C# Json序列化和反序列化工具的使用.类型方法大全   Newtonsoft.Json Newtonsoft.Json 是.Net平台操作Json的工具,他的介绍就 ...

  2. C# 算法题系列(二) 各位相加、整数反转、回文数、罗马数字转整数

    各位相加 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数. 示例: 输入: 输出: 解释: 各位相加的过程为: + = , + = . 由于 是一位数,所以返回 . 进阶:你可以 ...

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

    问题描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数. 又如:对于10进制数 ...

  4. python3 练习题100例 (二十六)回文数判断

    题目内容: 给一个5位数,判断它是不是回文数,是则输出yes,不是则输出no. 例如12321是回文数,它的个位与万位相同,十位与千位相同. 输入格式: 共一行,为一个5位数. 输出格式: 共一行,y ...

  5. Java实现 蓝桥杯VIP 算法训练 回文数

    import java.util.Scanner; public class 回文数 { static int time = 0; public static int change(String st ...

  6. C语言 · 特殊回文数

    问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n . 输入格式 输入一行,包含一个正整数n. 输 ...

  7. 2016中国大学生程序设计竞赛(长春)-重现赛 1010Ugly Problem 回文数 模拟

    Ugly Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  8. 有趣的数-回文数(Palindrome number)

    文章转自http://blog.163.com/hljmdjlln@126/blog/static/5473620620120412525181/ 做LC上的题"Palindrome num ...

  9. yzoi1109&&viojs1042最小步数的一点看法——回文数

    Description - 问题描述 有一天,雄霸传授本人风神腿法第一式:捕风捉影..............的步法(弟子一:堂主,你大喘气呀.风:你给我闭嘴.)捕风捉影的关键是换气(换不好就会大喘气 ...

随机推荐

  1. 201803-3 URL映射

    问题描述 URL 映射是诸如 Django.Ruby on Rails 等网页框架 (web frameworks) 的一个重要组件.对于从浏览器发来的 HTTP 请求,URL 映射模块会解析请求中的 ...

  2. docker CMD 和 ENTRYPOINT 区别

    昨天用Dockerfile来启动mongodb的集群,启动参数--replSet死活没执行,最后就决定研究一哈cmd和entrypoint.但是上网看了一些资料个人觉得讲的不好,还是没有说出根本的东西 ...

  3. Neo4j Cypher语法(二)

    目录 4 子句 4.1 CREATE 4.2 MATCH 4.3 Match 4.4 Create match return连用来返回一个关系基础 4.5 Optional_match 4.6 Wit ...

  4. CSM(Certified Scrum Master) 敏捷认证是什么?

    Scrum 是用于开发和持续支持复杂产品的一个框架.Scrum 基于试验性过程控制理论,借鉴了精益思想.时间盒.模块化设计等,并完整地体现了敏捷宣言和敏捷原则.Scrum 采用一种迭代.增量式的方法来 ...

  5. [C#]使用BackgroudWorker刷新UI延迟的解决方法

    今天使用BackgroundWorker刷新UI发生延时现象,找了好久才发现AutoResetEvent可以解决,代码如下 private void BgWorker_ProgressChanged( ...

  6. JS基础_流程控制语句

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. Pr PS 笔记

    1. 保存窗口配置    窗口-新建工作区 2. 添加快捷键  编辑-自定义快捷键 3. 添加关键帧,需要下拉轨道 4. 关闭PR声音 5. 视频稳定器 选中素材,右键选择嵌套,嵌套后在子序列把视频画 ...

  8. 抓包工具之tcpdump

    tcpdump 官网 -> http://www.tcpdump.org 1. 安装步骤 在官网分别下载 Tcpdump.Libpcap 这两个包链接 在安装Tcpdump之前,先安装Libpc ...

  9. 4.ID主键生成策略

    保证唯一性(auto_increment) 一.xml方式 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping P ...

  10. cmake 判断操作系统平台

    转载自 cmake 判断操作系统平台 MESSAGE(STATUS "operation system is ${CMAKE_SYSTEM}") IF (CMAKE_SYSTEM_ ...