zoukankan      html  css  js  c++  java
  • noip 1999 回文数

    题目描述

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

    例如:给定一个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
    
    字符串
    模拟
    #include<cstdio>
    #include<cstring>
    
    
    char a[100],c[100];
    int n;
    int len;
    
    void update()
    {
        for(int i=0,j=len-1;i<len;i++,j--)
            c[j]=a[i];
        for(int i=0;i<len;i++)
            a[i]=c[i];
        for(int i=0;i<len;i++)
        {
            if(a[i]>=n)
            {
                if(i==len-1)len++;
                a[i+1]+=a[i]/n;
                a[i]%=n;
            }
        }
        for(int i=0,j=len-1;i<len;i++,j--)
            c[j]=a[i];
        for(int i=0;i<len;i++)
            a[i]=c[i];
    }
    
    bool pd()
    {
        for(int i=0,j=len-1;i<=len/2;i++,j--)
        {
            if(a[i]!=a[j])return false;
        }
        return true;
    }
    
    int main()
    {
        scanf("%d",&n);
        scanf("%s",a);
        
        len=strlen(a);
        for(int i=0;i<len;i++)
        {
            if(a[i]>='0'&&a[i]<='9')a[i]-=48;//0 = 48
            else if(a[i]>='A'&&a[i]<='F')a[i]=a[i]-'A'+10;
            else if(a[i]>='a'&&a[i]<='f')a[i]-=87;
        }
        
        int step;
        for(step=0;step<30;step++)
        {
            if(pd())break;
            for(int i=0;i<len;i++) 
                c[i]=a[i];
            for(int i=0,j=len-1;i<len;i++,j--) 
                a[i]+=c[j];
            update();
        }
        if(step!=30)
        printf("STEP=%d
    ",step);
        else printf("Impossible!
    ");
        return 0;
    }
  • 相关阅读:
    NS3 使用NS3工具PyViz
    ns-3 NetAnim遇到了一个问题
    NS-3 MyFirstScriptExample
    Ubuntu下Eclipse安装与编译ns-3遇见的各种问题
    Ubuntu 12.04 安装JDK
    近期学习的参考博客链接
    Win7上安装WMware虚拟机和Ubuntu操作系统
    C++课程小结 继承与派生
    C语言中生产随机数 rand()函数
    PTA第三次上机
  • 原文地址:https://www.cnblogs.com/sssy/p/6894613.html
Copyright © 2011-2022 走看看