1161转进制

题目链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1162

早上来刷道,顺利AC,附加关键题解,瞬间感觉神清气爽。。。。

 

 1 #include<iostream>
 2 using namespace std;
 3 int m,x;//确定全局变量m很重要,这样就不用传参数了 
 4 //f()函数功能:1.输出余数2.递归进入参数为商3.注意两个先后顺序,颠倒后为正序输出 
 5 void f(int n)
 6 {
 7     
 8     if(n>1)f(n/m);
 9     //以下代码是为了当出现16进制时,转换成字符 
10     switch(n%m)
11     {
12         case 10:cout<<'A';break;
13         case 11:cout<<'B';break;
14         case 12:cout<<'C';break;
15         case 13:cout<<'D';break;
16         case 14:cout<<'E';break;
17         case 15:cout<<'F';break;
18         default :cout<<n%m;break;
19     }
20 }
21 int main()
22 {
23     cin>>x>>m;
24     f(x);
25     
26     return 0;
27  } 

 

 AC 之后也再看题解。。

以上代码可以借鉴的地方,用数组来巧妙表示进制位数。。。

但相对于本人的代码,他的函数需要传参2个,而我的代码中巧妙利用全局变量,只需要传参1个。。

 

 

 

posted @ 2017-12-20 08:46  TFLSNOI  阅读(1439)  评论(0编辑  收藏  举报