진 평균 값 - 진 변환 + 최대 공약수

2813 단어 【알고리즘】
제목.
CS 학과 학생 임 에 도 불구 하고 B 군 은 수학 기초 가 좋 고 수치 계산 에 특별한 관심 을 가지 고 컴퓨터 프로그램 으로 수학 문 제 를 해결 하 는 것 을 좋아 합 니 다. 지금 은 수치 변환 게임 을 하고 있 습 니 다.그 는 컴퓨터 에서 항상 다른 진법 으로 한 수 를 표시 하 는 것 을 발견 했다. 예 를 들 어 10 진수 123 이 16 진법 으로 표 현 될 때 두 자릿수 7, 11 (B) 만 포함 하고 8 진법 으로 세 자릿수 1, 7, 3 을 표시 하 며 서로 다른 진법 으로 표현 할 때 각 자릿수 의 합 도 다르다. 예 를 들 어 상기 예 에서 16 진법 과 8 진법 에서 각 자릿수 의 합 은 각각 18 과 11 이다.작은 B 가 관심 을 가 지 는 것 은 하나의 숫자 A 가 2 에서 A - 1 진법 으로 표현 할 때 각 자릿수 의 합 은 얼마 입 니까?그녀 는 네가 그녀 를 도와 이 문 제 를 해결 할 수 있 기 를 바 랍 니까?모든 계산 은 10 진법 에 기초 하여 진행 되 었 고 결 과 는 10 진법 으로 간략하게 할 수 없 는 점수 형식 으로 표시 되 었 다.
입력 설명:
입력 중 여러 조 의 테스트 데이터 가 있 고 각 조 의 테스트 데 이 터 는 하나의 정수 A (1 ≤ A ≤ 5000) 입 니 다.
출력 설명:
각 그룹의 테스트 데 이 터 를 단독 줄 에서 X / Y 로 출력 합 니 다.
입력 예 1:
5
3

출력 예 1:
7/3
2/1

사고의 방향
제목 이 매우 기본 적 이어서 복습 으로 삼 는 다.주로 십 진법 과 기타 진법 의 전환 과 전전 상 제법 을 포함한다.
코드
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNextInt()) {
            int num = scan.nextInt();

            int sum = 0;
            for (int i = 2; i < num; i++) {
                int n = num;
                while (n != 0) {
                    sum += n % i;
                    n /= i;
                }
            }

            int g = gcd(sum, num - 2);
            System.out.println("" + sum/g + '/' + (num - 2)/g);
        }

    }

    //     
    private static int gcd(int a, int b) {
        if (b == 0)
            return a;
        return gcd(b, a % b);
    }

}

좋은 웹페이지 즐겨찾기