盛江山确实好吃
2024-12-02 11:25:57
发布于:黑龙江
11阅读
0回复
0点赞
题出错了,少了一个关键条件:屠龙人和骗子数量是一样多的
设A=身份是屠龙人,B=说了真话;
对立事件的符号我打不出来,就用!表示对立事件了
AB+A(!)B+(!)AB+(!)A(!)B=Ω
A=(!)A AB=(!)AB
A-AB=A(!)B
A=A(!)B+AB
A=B
(!)A=B
综上所述:AB=A(!)B=(!)AB=A(!)B=Ω/4
人数必须是整数,所以Ω必须除以4后仍然是整数,所以当总人数为4的倍数时成立,说谎人数为总人数一半
#include<iostream>
using namespace std;
int main(){
int n;cin>>n;
while (n--){
int a;cin>>a;
if(a%4!=0)cout<<"-1"<<endl;
else cout<<a/2<<endl;
}
}
这里空空如也
有帮助,赞一个