AtCoder ABC 133 A&B&C&D AtCoder - 133
A - T or T
	private void solveA() {
		int n = nextInt();
		int a = nextInt();
		int b = nextInt();
		out.println(n * a > b ? b : n * a);
	}
B - Good Distance
-N'oubliez pas la condition de $ (i <j) $
	private void solveB() {
		int n = nextInt();
		int d = nextInt();
		int[][] wk = Stream.generate(() -> IntStream.range(0, d).map(i -> nextInt()).toArray()).limit(n)
				.toArray(int[][]::new);
		int res = 0;
		for (int i = 0; i < n; i++) {
			//i <Remarque j
			for (int j = i + 1; j < n; j++) {
				long tmp = 0;
				for (int k = 0; k < d; k++) {
					tmp += Math.pow(wk[i][k] - wk[j][k], 2);
				}
				long tmpRes = (long) Math.sqrt(tmp);
				if (Math.pow(tmpRes, 2) == tmp) {
					res++;
				}
			}
		}
		out.println(res);
	}
C - Remainder Minimization 2019
―― Que pouvez-vous faire si vous réduisez le maximum (r)?
	private void solveC() {
		final int CONST_MOD = 2019;
		int l = nextInt();
		int r = nextInt();
		/*
		 *Rien ne peut être fait sans réduire le maximum pour le moment.
		 * l+Adoptez le plus petit de 2019 ou r comme valeur maximale (car c'est un MOD)
		 * l+Un cycle en 2019. Cependant, avec cela, la valeur minimale ne sort qu'une seule fois.
		 * +(2019*2)Si vous faites deux tours, 1 apparaîtra deux fois.
		 *
		 */
		int wkR = Math.min(l + (CONST_MOD * 2), r);
		int res = 2020;
		for (int i = l; i <= wkR; i++) {
			for (int j = i + 1; j <= wkR; j++) {
				res = Math.min(((i % CONST_MOD) * (j % CONST_MOD)) % CONST_MOD, res);
			}
		}
		out.println(res);
	}
D - Rain Flows into Dams
Exemple: 2
| barrage | 3 | 8 | 7 | 5 | 5 | |||||
| Montagne | a | B | C | D | E | |||||
| 2 | 4 | 12 | 2 | 8 | 
	 
Barrage 1=Montagne A/2 +Montagne B/2  ->Barrage 1*2 =Montagne A +Montagne B  -> Montagne B =Barrage 1*2 -Montagne A
Barrage 2=Montagne B/2 +Montagne C/2  ->Barrage 2*2 =Montagne B +Montagne C  -> Montagne C =Barrage 2*2 -Montagne B
Barrage 3=Montagne C/2 +Montagne D/2  ->Barrage 3*2 =Montagne C +Montagne D  -> Montagne D =Barrage 3*2 -Montagne C
Barrage 4=Montagne D/2 +Montagne E/2  ->Barrage 4*2 =Montagne D +Montagne E  -> Montagne E =Barrage 4*2 -Montagne D
Barrage 5=Montagne E/2 +Montagne A/2  ->Barrage 5*2 =Montagne E +Montagne A  -> Montagne A =Barrage 5*2 -Montagne E
Trouvez d'abord la montagne A en transformant l'équation ci-dessus
Montagne A=Barrage 1-Barrage 2+Barrage 3-Barrage 4+Barrage 5
	 
Si la montagne A est décidée, elle le sera après la montagne B
Montagne B=Barrage 1*2 -Montagne A
Montagne C=Barrage 2*2 -Montagne B
Montagne D=Barrage 3*2 -Montagne C
Montagne E=Barrage 4*2 -Montagne D
	private void solveD() {
		int n = nextInt();
		int[] wk = IntStream.range(0, n).map(i -> nextInt()).toArray();
		long a = 0;
                //Le barrage pair+, Le nombre impair de barrages-
		for (int i = 0; i < wk.length; i++) {
			if (i % 2 == 0) {
				a += wk[i];
			} else {
				a -= wk[i];
			}
		}
		long[] mountain = new long[n];
		mountain[0] = a;
		//La dernière montagne est la montagne A, elle est donc exclue
		for (int i = 0; i < mountain.length - 1; i++) {
			mountain[i + 1] = wk[i] * 2 - mountain[i];
		}
		StringBuilder builder = new StringBuilder();
		for (long l : mountain) {
			builder.append(l + " ");
		}
		out.println(builder.toString().trim());
	}
        Recommended Posts