一个数的四进制表达式是一个三位数,它的三进制表达式也是一个三位数,而且这两个三位数的数码顺序恰好相反.请问:这个自然数的十进制表达式是什么?(过程)
一个数的四进制表达式是一个三位数,它的三进制表达式也是一个三位数,而且这两个三位数的数码顺序恰好相反.请问:这个自然数的十进制表达式是什么?(过程)
一个数的四进制表达式是一个三位数,它的三进制表达式也是一个三位数,而且这两个三位数的数码顺序恰好相反.请问:这个自然数的十进制表达式是什么?(过程)
一个数的四进制表达式是一个三位数,它的三进制表达式也是一个三位数,而且这两个三位数的数码顺序恰好相反.请问:这个自然数的十进制表达式是什么?(过程)
由于这个自然数的三进制表达是一个三位数,则该自然数应该处于[3^2,3^3-1],即它处于[9,26],穷举这个范围的数,检验其是否满足题目条件即可找到结果.
#include <stdio.h>
#include <conio.h>
void convert(int n,int s,int wei[]){//将n转换为s进制,并存入wei数组中
int i=0;
while(n){
wei[i++]=n%s;
n/=s;
}
}
void reverse(int a[],int n){//将数组a(具有n个元素)反转
int i,j,t;
for(i=0,j=n-1;i<j;++i,--j){
t=a[i]; a[i]=a[j]; a[j]=t;
}
}
int to10(int wei[],int n,int s){//将数组wei(存有n位s进制数)转换为十进制数
int w=1,i,d=0;
for(i=0;i<n;++i){
d+=wei[i]*w;
w*=s;
}
return d;
}
int main(){
int w3[3]={0},j,k;
for(k=9;k<=26;++k){
convert(k,3,w3);
reverse(w3,3);
j=to10(w3,3,4);
if(k==j){
printf("%d(3)=",k);
for(j=0;j<3;++j)printf("%d",w3[j]);
printf("\n");
}
}
printf("\nFinished!\n");
getch();
return 0;
}
运行结果为22.