- C++
进制练习
- 2024-2-23 17:28:19 @
进制转换
编程实现:九进制回文数
提示信息:
回文数:反向排列与原来一样的数就叫做回文数 。 例如,12321是回文数,1231不是回文数。
九进制数:指逢9进位的一种进位计数制,以0、1、2、3、4、5、6、7、8共九个数码表示。例如:十进制数9等于九进制数10,十进制数81等于九进制数100,以此类推。
题目描述:
给定两个正整数N和M(1≤N≤M≤5000),请计算出N到M之间(含N和M)总共有多少个数满足以下条件:
1、转换为九进制之后为回文数;
2、转换为九进制后每个数位上的数字都是奇数。
例如:
当N=90,M=120,90到120之间(含90和120)总共有2个数满足条件,为91和109。
91转换为九进制为111,是一个回文数,且每个数位上的数字都是奇数;
109转换为九进制为131,是一个回文数,且每个数位上的数字都是奇数;故输出2。
输入描述:
输入两个正整数N和M(1≤N≤M≤5000),两个正整数之间用一个空格隔开
输出描述:
输出一个整数,表示N到M之间(含N和M)总共有多少个满足条件的正整数
样例输入:90 120
样例输出:2
4 条评论
-
xinao001 LV 5 @ 2024-2-23 17:51:32
👍 👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍
-
2024-2-23 17:39:32@
#include<bits/stdc++.h> using namespace std; const int N = 1e6+10; int n,m,ans=0; bool pd(int a){ int num1=0,num2=0,k=1; while(a){ int tmp = a%9; if(tmp%2==0)return false; num1=num1*9+tmp; num2=tmp*k+num2; k*=9; a/=9; } if(num1==num2)return true; else return false; } int main(){ cin>>n>>m; for(int i=n;i<=m;i++){ if(pd(i)){ ans++; } } cout<<ans; return 0; }
-
2024-2-23 17:31:40@
👍
-
2024-2-23 17:30:59@
#include<iostream> #include<cctype> using namespace std; int main() { int n,m,i,sum=0,time=1; char num1[30]={0}; int num2[30]={0}; int num3[30]={0}; cin>>n>>num1>>m; for(i=0;num1[i]!=0;i++) { if(isdigit(num1[i])) { num2[i]=num1[i]- '0'; } else { num2[i]=(num1[i]- 'A')+10; } } int len1=i; for(i=len1-1;i>=0;i--) { sum+=num2[i]*time; time*=n; } int len2=0; while(sum>=1) { num3[len2]=sum%m; sum/=m; len2++; } for(int i=len2 - 1;i>=0;i--) { if(num3[i]<10) { cout<<num3[i]; }else{ cout<<(char)num3[i]-10+ 'A'; } } return 0; }
- 1