如何用二进制表示一个长尾词,使其成为回文数?

2026-04-10 08:501阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计271个文字,预计阅读时间需要2分钟。

如何用二进制表示一个长尾词,使其成为回文数?

1009-回文数 [NOIP1999] 回文数_2021秋季算法入门班第一章习题:模拟、枚举、贪心(nowcoder.com) 本题的关键在于将不同进制的数转换为十进制,并判断其是否为回文数。

如何用二进制表示一个长尾词,使其成为回文数?

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

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

#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!

本文共计271个文字,预计阅读时间需要2分钟。

如何用二进制表示一个长尾词,使其成为回文数?

1009-回文数 [NOIP1999] 回文数_2021秋季算法入门班第一章习题:模拟、枚举、贪心(nowcoder.com) 本题的关键在于将不同进制的数转换为十进制,并判断其是否为回文数。

如何用二进制表示一个长尾词,使其成为回文数?

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

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

#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!