社区讨论

样例是对的啊,为什么都RE了???

P4593[TJOI2018] 教科书般的亵渎参与者 6已保存回复 9

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
9 条
当前快照
1 份
快照标识符
@mi6tqs1t
此快照首次捕获于
2025/11/20 10:40
4 个月前
此快照最后确认于
2025/11/20 10:40
4 个月前
查看原帖
C
#include <iostream>
#include <cmath>
using namespace std;
int main(){
	int t,b;
	long long a; 
	//分数数组 
	long long scores[10];
	int scores_index = 0;
	cin>>t;
	//每次循环代表一组测试数据 
	for(int j=0;j<t;j++){
		int n,m;
		cin>>n>>m;
		//表示需要使用亵渎的数量 
		int num0 = m+1;
		//存储没有出现的血量(为了方便计算,所以lack[0]要为0) 
		int lack[51]; 
		//表示存活下来的血量最低者的总血量 
		int lack_index=0;
		//输入没有出现的血量 
		for(int i=1;i<=m;i++){
			cin>>lack[i];
		}
		//表示当前使用亵渎的张数 
		int num1 = 0;
		//表示分数 
		long long score = 0;
		//表示亵渎造成的伤害
		long long damage = 0;
		 
		while(num1<num0){
			//判断是否有该血量 
			int lack_index2 = lack_index+1;
			//先加分 
			for(int i=lack[lack_index];i<=n;i++){
				//如果有该血量
				if(i==lack[lack_index2]){
					lack_index2++;
				} else{
					//现有血量=i-damage
					//pow(x,y)表示x的y次方 
					score+=pow(i-damage,num0);
					//cout<<"plus:"<<pow(i-damage,num0)<<endl;
					//因为要%10^9+7,所以避免溢出,在计算后就进行取余
					score = score%1000000007; 
					//cout<<"score:"<<score<<endl;
				} 
				
			}
			//使用了一张亵渎 
			num1++;
			lack_index++; 
			//造成伤害直到下一个没有出现血量者生命值为1
			damage+=lack[lack_index]-damage;
			//cout<<"damage:"<<damage<<endl; 
		}
		//分数直接输出会打断输入,所以存入数组
		a =score;
		scores[scores_index] = a;
		scores_index++;
	}
	//输出
	for(int i=0;i<scores_index;i++){
		cout<<scores[i]<<endl;
	} 
	return 0;
}

好奇怪啊

回复

9 条回复,欢迎继续交流。

正在加载回复...