社区讨论
样例是对的啊,为什么都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 条回复,欢迎继续交流。
正在加载回复...