题目:

计算rks

题目解析

这道题每次会输出三个数据我们可以创建一个类

class songs {
	public:
		string name; //歌名
		float Accuracy; //准确度
		float destiny; // 定数
};

我们要计算每个歌曲的rks就要用22((acc0.55)/0.45)((acc-0.55)/ 0.45) × 定数。也就是

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;
}