zoukankan      html  css  js  c++  java
  • 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 = 4884

    在这里的一步是指进行了一次N进制的加法,上例最少用了4步得到回文数4884。

    写一个程序,给定一个N(2<=N<=10,N=16)进制数M(100位之内),求最少经过几步可以得到回文数。如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible!”

    输入输出格式

    输入格式:

    两行,分别是N,M。

    输出格式:

    STEP=ans

    输入输出样例

    输入样例#1:
    10
    87
    
    输出样例#1:
    STEP=4
    

     思路:

      运用学习高精度加法时的思想 用字符串来存储数据 然后进行字符串的加法,在比较的时候注意判断 判断不成立ans++ 一直到30或者判断成功输出

    #include<cstdio>
    #include<string>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    
    const int maxn = 1005;
    int a[maxn],N;
    
    void in(int a[]) {
        string str;
        cin>>N>>str;
        a[0] = str.length();
        for(int i = 1; i <= a[0]; i++) {
            if(str[a[0] - i] >= '0' && str[a[0] - i] <= '9') a[i] = str[a[0] - i] - '0';
            else a[i] = str[a[0] - i] - 'A' + 10;
        }
    }
    
    inline bool check(int a[]) {
        for(int i=1; i<=a[0]; i++)
            if(a[i]!=a[a[0]-i+1]) return false;
        return true;
    }
    
    inline void Plus(int a[]) {
        int b[maxn];
        for(int i=1; i<=a[0]; i++) b[i]=a[a[0]-i+1];
        for(int i=1; i<=a[0]; i++) a[i]+=b[i];
        for(int i=1; i<=a[0]; i++) {
            a[i+1]+=a[i]/N;
            a[i]%=N;
        }
        while(a[a[0]+1]>0) a[0]++;
        return;
    }
    int main() {
        in(a);
        if(check(a)) {
            cout<<"STEP=0";
            return 0;
        }
        int ans=0;
        while(ans<=30) {
            ans++;
            Plus(a);
            if(check(a)) {
                cout<<"STEP="<<ans;
                return 0;
            }
        }
        cout<<"Impossible!";
        return 0;
    }
    回文数

    自己选的路,跪着也要走完!!!

  • 相关阅读:
    Orchard Oracle 支持
    讽刺的是,我在linux下使用最多的命令,竟然是windows的
    学习bash
    提高分布式环境中程序启动性能的一个方法
    MQTT X v1.4.1 正式发布
    社区力量|因为 EMQ,他上了微博热搜
    不止是现在,更关注未来:EMQ 携手高校加强物联网人才培养
    EMQ 助力西安增材制造国家研究院打造增材智能车间平台
    Kuiper 1.0.1 正式发布
    MQTT X v1.4.0 正式发布
  • 原文地址:https://www.cnblogs.com/wsdestdq/p/7497543.html
Copyright © 2011-2022 走看看