题目链接: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个。。