题目描述 尽管是一个 CS 专业的学生,小 B 的数学基础很好并对数值计算有着特别的兴趣,喜欢用计算机
程序来解决数学问题,现在,她正在玩一个数值变换的游戏。她发现计算机中经常用不同的进制表示一个数,
如十进制数 123 表达为 16 进制时只包含两位数 7、11(B),用八进制表示为三位数 1、7、3,按不同进制表
达时,各个位数的和也不同,如上述例子中十六进制和八进制中各位数的和分别是 18 和 11,。
小 B 感兴趣的是,一个数 A 如果按 2 到 A-1 进制表达时,各个位数之和的均值是多少?她希望你能帮她解决这
个问题?
所有的计算均基于十进制进行,结果也用十进制表示为不可约简的分数形式。
输入
输入中有多组测试数据,每组测试数据为一个整数 A(1<=A=<5000).
输出
对每组测试数据,在单独的行中以 X/Y 的形式输出结果。
样例输入
5
3
样例输出
7/3
2/1
#python
sum = 0
#对某一个数的某一种进制求和
def scale(n,i):
global sum
while(n):
sum+=n%i
n = int(n/i)
while(True):
#循环输入数A的2到A-1进制
a = int(input())
n = a - 1
while(True):
scale(a,n)
n = n-1
if n==1:
break
print("%d/%d"% (sum,(a-2)))
package cn.itcast.algorithm;
import java.util.ArrayList;
/**
* @author Mr.Xu
* @TODO 递归
* @date 2018年9月11日
*/
public class recursionScaleDemo {
static Integer numInteger = 5;//测试数据
static ArrayList<Integer> arrayList = new ArrayList<Integer>();
static Integer sumInteger = 0;
public static void recursionScale(int chushu,int beichushu){
if (chushu==0) {
return ;
}
else {
recursionScale(chushu/beichushu,beichushu);
sumInteger+=chushu%beichushu;
return;
}
}
public static void main(String[] args) {
for (int i = 2; i <=numInteger-1; i++) {
recursionScale(numInteger,i);
}
System.err.println(sumInteger+"/"+(numInteger-2));
}
}
/**
*
*/
package cn.itcast.algorithm;
/**
* @author Mr.Xu
* @TODO
* @date 2018年9月11日
*/
public class Scale {
static int sum ;
static int A = 3;
public static void main(String[] args) {
for(int i =2;i<=A-1;i++){
test(A,i);
}
System.out.println(sum+"/"+(A-2));
}
public static void test(int num,int scale){
while(true){
sum+=num % scale;
num = num / scale;
if(num == 0) break;
}
}
}