結果
| 問題 |
No.553 AlphaCoder Rating
|
| コンテスト | |
| ユーザー |
xuzijian629
|
| 提出日時 | 2018-10-30 00:42:43 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 20 ms / 1,500 ms |
| コード長 | 1,095 bytes |
| コンパイル時間 | 2,044 ms |
| コンパイル使用メモリ | 196,428 KB |
| 最終ジャッジ日時 | 2025-01-06 15:05:12 |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 12 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:46:14: warning: ‘sum2’ may be used uninitialized [-Wmaybe-uninitialized]
46 | sum2 += pow(0.9, i);
| ~~~~~^~~~~~~~~~~~~~
main.cpp:43:21: note: ‘sum2’ was declared here
43 | double sum = 0, sum2;
| ^~~~
ソースコード
#include <bits/stdc++.h>
using namespace std;
using i64 = int64_t;
using vi = vector<i64>;
using vvi = vector<vi>;
double F[101];
double f[101];
void build() {
double sum1 = 0, sum2 = 0;
for (int i = 1; i <= 100; i++) {
sum1 += pow(0.81, i);
sum2 += pow(0.9, i);
F[i] = sqrt(sum1) / sum2;
// cout << sqrt(sum1) / sum2 << endl;
}
double Finf = 0.22941573387056196642;
for (int i = 1; i <= 100; i++) {
f[i] = (F[i] - Finf) / (F[1] - Finf) * 1200;
}
}
double ginv(double y) {
return log2(y) * 800;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
cout.setf(ios::fixed);
cout.precision(20);
build();
int n;
cin >> n;
vi rs(n);
for (int i = 0; i < n; i++) {
cin >> rs[i];
}
double sum = 0, sum2;
for (int i = 1; i <= n; i++) {
sum += pow(2, rs[i - 1] / 800.0) * pow(0.9, i);
sum2 += pow(0.9, i);
}
double rating = ginv(sum / sum2) - f[n];
// cout << rating << endl;
cout << i64(rating + 0.5) << endl;
}
xuzijian629