美文网首页
OJ练习1 --- 进制均值

OJ练习1 --- 进制均值

作者: 梦蓝樱飞2020 | 来源:发表于2017-11-30 16:32 被阅读16次

问题:
求一个数A如果按2到A-1进制表达时, 各个位数之和的均值是多少?

输入:
输入中有多组测试数据, 每组测试数据为一个整数(A在[1, 5000]内)
输出:
对每组测试数据, 在单独的行中以X/Y的形式表达.

样例输入
5
3
样例输出
7/3
2/1

分析:
均值即平均值, 数字5在二进制下, 变为101, 3进制下为12, 4进制下为11, 故结果为7/3.
e.g.
255(10), n是数字, a是进制数, 255%10为个位数5, 即通过取余和移位的方法, 可以求得该数字在几进制下的所有位数之和, 再通过循环取得从2到A-1进制下的总和即可.

代码示例以及注释:

package nowcoder.a1_Jingdong;

import java.util.Scanner;

/**
 * 进制均值
 *
 * @Author menglanyingfei
 * @Created on 2017.11.29 15:24
 */
public class T1_hexSum {

    public static void main(String[] args) {
        int A;

        Scanner sc = new Scanner(System.in);
        while ((A = sc.nextInt()) != 0) {
            int sum = 0;

            for (int i = 2; i <= A - 1; i++) {
                sum += hexSum(A, i);
            }

            int r = gcd(sum, A-2);
            System.out.println((sum / r) + "/" + (A-2) / r);
        }
        
    }

    // 求一个进制数的所有位数之和, n是数字, a是进制数
    public static int hexSum(int n, int a) {
        int sum = 0;
        while (n != 0) {
            sum += (n % a);
            n = n / a;
        }

        return sum;
    }
    /*

    实现gcd比较好用的是辗转相除法
    比如:49和91
     a      b        temp
    49  %  91  =  49
    91  %  49  =  42
    49  %  42  =  7
    42  %  7    =  0
    所以最大公约数就是7.
    (看懂这, 下面的代码, 你肯定懂的!)
     */
    // 求最大公约数(辗转相除法)
    private static int gcd(int sum, int i) {
       while (i != 0) {
           int temp = sum % i;
           sum = i;
           i = temp;
       }
       return sum;
    }
}

相关文章

  • OJ练习1 --- 进制均值

    问题:求一个数A如果按2到A-1进制表达时, 各个位数之和的均值是多少? 输入:输入中有多组测试数据, 每组测试数...

  • MySQL语法模板 函数:统计

    MySQL语法模板系列 平均值 二进制按位与 二进制按位或 二进制按位异或 统计二进制1的个数 统计记录数 分组中...

  • 「每日一道算法题」Two Sum

    OJ address OJ website : 1. Two Sum Description Given an a...

  • mysql练习题

    SQL练习题目来源 https://www.nowcoder.com/activity/oj[https://ww...

  • 均值、标准差、偏度、峰度的绘制

    练习:均值、标准差、偏度、峰度的绘制 均值 标准差 偏度 峰度

  • 晨读01 a private conversation

    英语发音: 标准不标准,是否接近平均值,练习的目标是接近平均值。 几阶段 1. 说清楚 节奏,发音 2. 说得更地...

  • Welcome to NEUQ OJ

    Welcome to NEUQ OJ. 什么是OJ? OJ是Online Judge系统的简称,用来在线检测程序源...

  • 潜修亮剑一

    /*基础练习 十六进制转八进制 时间限制:1.0s 内存限制:512.0MB 提交此题 锦囊1 锦囊2 问题...

  • OJ:lintcode 二进制求和

    给定两个二进制字符串,返回他们的和(用二进制表示)。您在真实的面试中是否遇到过这个题?Yes样例a = 11b =...

  • 编程作业(七)

    K均值算法与主成分分析算法 K均值分析算法 在本部分练习中,你将实现K均值算法并将该算法用于图像压缩。最初,你通过...

网友评论

      本文标题:OJ练习1 --- 进制均值

      本文链接:https://www.haomeiwen.com/subject/ikgvbxtx.html