当前位置 : 主页 > 编程语言 > c语言 >

涉及到进制的回文题

来源:互联网 收集:自由互联 发布时间:2023-09-07
1009-[NOIP1999]回文数_2021秋季算法入门班第一章习题:模拟、枚举、贪心 (nowcoder.com) 这道题的关键就是把不同进制的变成十进制的 #includeiostream#includecstringusing namespace std;int main(){ int n; s

1009-[NOIP1999]回文数_2021秋季算法入门班第一章习题:模拟、枚举、贪心 (nowcoder.com)

涉及到进制的回文题_i++

 这道题的关键就是把不同进制的变成十进制的

#include<iostream>
#include<cstring>
using namespace std;

int main()
{
    int n;
    scanf("%d",&n);
    string str;
    cin>>str;
    //进制转换
    long long m=0;
    for(int i=0;i<str.size();i++)//把一个不同进制的数变成十进制的
    {
        if(str[i]>'9') //对于一位数,十进制的数没有大于9的,那就是其他进制的,比如十六进制0A
            m=m*n+str[i]-'A'+10;//10进制以上
        else 
            m=m*n+str[i]-'0';
    }
    for(int i=0;i<30;i++)
    {
        long long x=m,y=0;
        while(x)//判断回文串,可以用这个方法
        {
            y=y*n+x%n;
            x/=n;
        }
        if(y==m) 
        {
            cout<<"STEP="<<i;
            return 0;
        }
        m+=y;
    }
    cout<<"Impossible!";
    return 0;
}

Code over!

【文章出处:香港服务器 https://www.68idc.cn欢迎留下您的宝贵建议】
上一篇:c语言文件的编译和链接(非详解)
下一篇:没有了
网友评论