- lizexuan's blog
lizexuan005 计算rks
- 2023-5-13 17:05:30 @
题目:
题目解析
这道题每次会输出三个数据我们可以创建一个类
class songs {
public:
string name; //歌名
float Accuracy; //准确度
float destiny; // 定数
};
我们要计算每个歌曲的rks就要用 × 定数。也就是
pow(2, ((arr[i].Accuracy - 0.55) / 0.45)) * arr[i].destiny;
那么我们算出来每个歌曲的rks后再相加就能得到总rks就能利用总rks=当前rks +(当前rks + 19 * 打得所有歌的rks总之) ÷ 20 - 0.5
也就是
beforerks + ( beforerks + sum * 19 ) / 20 - 0.5;
再综合起来代码则为
代码
#include <bits/stdc++.h>
using namespace std;
class songs {
public:
string name;
float Accuracy;
float destiny;
};
int n;
songs arr[1000];
float rks[1000 + 1];
float sum = 0;
float currentrks = 0, beforerks = 0;
void computerks () {
for (int i = 1; i <= n; i++) {
rks[i] = pow(2, ((arr[i].Accuracy - 0.55) / 0.45)) * arr[i].destiny;
sum += rks[i];
}
}
int main() {
memset(rks, 0, sizeof(rks));
cin >> n >> beforerks;
for (int i = 1; i <= n; i++) {
cin >> arr[i].name >> arr[i].Accuracy >> arr[i].destiny;
}
currentrks = beforerks + ( beforerks + sum * 19 ) / 20 - 0.5;
printf("%3.2f", currentrks);
cout << endl;
return 0;
}