結果
| 問題 |
No.553 AlphaCoder Rating
|
| ユーザー |
uafr_cs
|
| 提出日時 | 2017-11-11 09:04:05 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 149 ms / 1,500 ms |
| コード長 | 1,397 bytes |
| コンパイル時間 | 2,376 ms |
| コンパイル使用メモリ | 79,084 KB |
| 実行使用メモリ | 41,492 KB |
| 最終ジャッジ日時 | 2024-11-24 18:38:14 |
| 合計ジャッジ時間 | 5,821 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 12 |
ソースコード
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Scanner;
public class Main {
public static long MOD = 1000000007;
public static double pow(double d, int p){
if(p == 0){
return 0;
}else if(p == 1){
return d;
}else if(p % 2 == 1){
return d * pow(d, p - 1);
}else{
final double ret = pow(d, p / 2);
return ret * ret;
}
}
public static double F(int n){
double nom = 0, denom = 0;
for(int i = 1; i <= n; i++){
nom += pow(0.81, i);
denom += pow(0.9, i);
}
return Math.sqrt(nom) / denom;
}
public static double f(int n){
final double F_INF = 0.2294157338705619;
final double nom = F(n) - F_INF;
final double denom = F(1) - F_INF;
return nom / denom * 1200;
}
public static double g(int perf){
return Math.pow(2.0, perf / 800.0);
}
public static double g_inv(double x){
return 800 * Math.log(x) / Math.log(2.0);
}
public static double rating(int n, int[] perfs){
double nom = 0, denom = 0;
for(int i = 1; i <= n; i++){
nom += g(perfs[i - 1]) * pow(0.9, i);
denom += pow(0.9, i);
}
return g_inv(nom / denom) - f(n);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
final int N = sc.nextInt();
int[] perfs = new int[N];
for(int i = 0; i < N; i++){
perfs[i] = sc.nextInt();
}
System.out.printf("%.00f\n", rating(N, perfs));
}
}
uafr_cs