进制均值

    题目描述 尽管是一个 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;
		}
	}
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值