本蒟蒻的第四篇题解,望大家多多见谅!
P
a
r
t
Part
Part
1
1
1 读题
题目描述:
把一个十进制正整数转化成八进制。
输入格式:
一行,仅含一个十进制表示的整数 a a a ( 0 < a < 65536 ) (0 < a < 65536) (0<a<65536)。
输出格式:
一行, a a a的八进制表示。
输入样例:
9
输出样例:
11
数据范围与提示:
( 0 < a < 65536 ) (0 < a < 65536) (0<a<65536)。
P a r t Part Part 2 2 2 思路
我们要输入 a a a,运算 a a a的八进制。即计算 a a a除以 8 8 8的余数,再对商除以 8 8 8,一直到商为 0 0 0时,对余数倒着输出,就是八进制的结果了。
运算
if(n<8)
return n;
else
return n%8+10*(再次计算(n/8));
P a r t Part Part 3 3 3 代码
方法一(有函数):
#include <bits/stdc++.h>
using namespace std;
int js(int n){
if(n<8)
return n;
else
return n%8+10*(js(n/8));
}
int main(){
int n;
cin>>n;
cout<<js(n)<<endl;
return 0;
}
方法二(无函数):
#include<bits/stdc++.h>
using namespace std;
int stk[100000];
int main(){
int n,top=0;
cin>>n;
do{
stk[++top]=n%8;
n=n/8;
}while(n!=0);
for(int i=top;i>=1;i--){
cout<<stk[i];
}
return 0;
}
P a r t Part Part 4 4 4 总结
本题考查“十转八”,采用“乘八取余,逆序输出”的方法。
看完题解后,会不会感到很简单呢?赶快去试试吧!