ヤマカサのプログラミング勉強日記

プログラミングに関する日記とどうでもよい雑記からなるブログです。

[yukicoder] No.112 ややこしい鶴亀算

鶴亀算の応用?

No.112 ややこしい鶴亀算 - yukicoder

今日もyukicoderのレベル1.5の問題を解いていきます。

この問題で、 i 番目の動物の足の数を  b_i とし、すべての動物の足の数を  S とします。 このとき、

 S = b_1 + \cdots + b_N

が成り立ちます。また、

 a_1 = S - b_1

 a_2 = S - b_2

    :

 a_N = S - b_N

上記を全て足し合わせると、

 a_1 + \cdots + a_N = (N - 1)S

が成り立つので、 S

{ \displaystyle
S = \dfrac{1}{N - 1}\sum_{k=1}^{N} a_k
}

となります。

全ての動物の足の数が分かったので、あとは鶴亀算を解くだけになります。

コード

import java.util.Scanner;

public class Exec0112 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int N = scan.nextInt();
        int []a = new int[N];
        for(int i = 0; i  < N; i++) {
            a[i] = scan.nextInt();
        }
        scan.close();
        int sum = 0;
        for(int i = 0; i < N; i++) {
            sum += a[i];
        }
        int S = sum / (N - 1);
        int t = 0;
        int k = N;
        for(int i = 0; i <= N; i++) {
            if(S == 2 * t + 4 * k) {
                System.out.println(t + " " + k);
                System.exit(0);
            }
            t ++;
            k --;
        }
    }
}