# 45 条题解

• @ 2017-11-02 15:32:28
``````#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;

int n,kao[4];

bool ans=false;

int main(){
scanf("%d",&n);
int a,b,c;
for(int i=1;i<=3;i++) cin>>kao[i];
sort(kao+1,kao+1+3);
if(kao[1]+1==kao[2]&&kao[2]+1==kao[3]) ans=true;
else if(kao[1]+n==kao[3]+1&&kao[1]+1==kao[2]) ans=true;
else if(kao[1]+n==kao[3]+1&&kao[2]+1==kao[3]) ans=true;
if(ans){
cout<<"JMcat Win";
return 0;
}
int now=(n-2)%2;
if(now) printf("PZ Win");
else cout<<"JMcat Win";
return 0;
}

``````
• @ 2016-05-08 16:03:13

#include <bits/stdc++.h>
using namespace std;
const int N=50010;
int n,flag,black[5];
int main(){
scanf("%d",&n);
for(int i=1;i<=3;i++) {scanf("%d",&black[i]);}
sort(black+1,black+4);
if(black[2]==black[1]+1 && black[2]==black[3]-1) flag=1;
if(black[1]+n==black[2]+2 && black[1]+n==black[3]+1)flag=1;
if(black[3]-n==black[1]-1 && black[3]-n==black[2]-2)flag=1;
if(flag) printf("JMcat Win");else printf((n-2)%2==0?"JMcat Win":"PZ Win");
return 0;
}
楼下的大神们说的很清楚了

• @ 2018-10-14 14:43:39

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
int point[3], n;
bool cat;
cin >> n;
for (int i = 0; i < 3; i++)
cin >> point[i];
for (int i = 1; i <= 3 * (n - 3); i++)
getchar();
sort(point, point + 3);
if((point[0]+1==point[1]&&point[1]+1==point[2]))
cat = true;
else if (point[0] = 0 && point[2] == n - 1 && point[1] == n - 2)
cat = true;
else if (point[0] == 0 && point[1] == 1 && point[2] == n - 1)
cat = true;
if (cat)
{
cout << "JMcat Win" << endl;
return 0;
}
if((n-2)%2==0)
cout << "PZ Win" << endl;
else
cout << "JMcat Win" << endl;
return 0;
}

• @ 2016-04-04 12:10:18

var
n,x,y,z,s:longint;
function t(x,y:longint):boolean;
begin exit((abs(x-y)=1) or (abs(x-y)=n-1)); end;
begin
if t(x,y) then inc(s);
if t(y,z) then inc(s);
if t(x,z) then inc(s);
if (s=2) or (s=3) or ((s<2) and (n mod 2=0)) then writeln('JMcat Win')
else writeln('PZ Win');
end.

• @ 2016-01-14 18:19:16

评测结果
编译成功

测试数据 #0: Accepted, time = 0 ms, mem = 508 KiB, score = 10
测试数据 #1: Accepted, time = 15 ms, mem = 512 KiB, score = 10
测试数据 #2: Accepted, time = 15 ms, mem = 512 KiB, score = 10
测试数据 #3: Accepted, time = 0 ms, mem = 508 KiB, score = 10
测试数据 #4: Accepted, time = 0 ms, mem = 512 KiB, score = 10
测试数据 #5: Accepted, time = 0 ms, mem = 508 KiB, score = 10
测试数据 #6: Accepted, time = 0 ms, mem = 512 KiB, score = 10
测试数据 #7: Accepted, time = 0 ms, mem = 508 KiB, score = 10
测试数据 #8: Accepted, time = 0 ms, mem = 508 KiB, score = 10
测试数据 #9: Accepted, time = 0 ms, mem = 508 KiB, score = 10
Accepted, time = 30 ms, mem = 512 KiB, score = 100
代码
#include<stdio.h>
int a,b,c,n,i;
int abs(int n)
{
return n>0?n:-n;
}
int cu(int m,int n)
{
int w=abs(m-n);
if(w==1||w==n-1) return 1;
return 0;
}
int main()
{
scanf("%d",&n);
if(n&1)
{
scanf("%d%d%d",&a,&b,&c);
i=cu(a,b)+cu(a,c)+cu(b,c);
if(i==2)
{
printf("JMcat Win\n");
return 0;
}
}
else
{
printf("JMcat Win\n");
return 0;
}
printf("PZ Win\n");
}

唉，真水这题

• @ 2012-08-16 15:01:16

第一次

6~9超时

第二次

4~7超时

第三次

1~4 超时

我无语了

一模一样的程序

这是什么破测评机

该死

终于过了

强烈希望vijos更新测评机

• @ 2012-08-05 22:16:01

路过

• @ 2010-03-18 19:52:24

奇偶分析

• @ 2010-03-14 15:06:30

program p1152;

var a:array[1..3] of longint;

i,j,n：longint;

begin

for i:=1 to 3 do

for j:=i+1 to 3 do

if a[i]>a[j] then begin t:=a[i];a[i]:=a[j];a[j]:=t; end;

if ((a[2]=a[1]+1) and (a[3]-1=a[2])) or

((a[1]=0)and(a[2]=1)and(a[3]=n-1)) or

((a[1]=0) and (a[2]=n-1) and (a[3]=n-2)) then writeln('JMcat Win')

else if odd(n) then writeln('PZ Win') else writeln('JMcat Win');

end.

楼下的少了个条件~

如果数据是

7

0 6 5

的话，答案是错的！！

• @ 2009-11-07 16:26:05

program lyc;

var a:array[1..3] of longint;

i,j,n,temp:longint;

ans:string;

begin

for i:=1 to 3 do

for j:=i+1 to 3 do

if a[i]>a[j] then

begin

temp:=a[i];

a[i]:=a[j];

a[j]:=temp;

end;

if ((a[2]=a[1]+1) and (a[3]-1=a[2])) or ((a[1]=0)and(a[2]=1)and(a[3]=n-1)) then writeln('JMcat Win')

else if odd(n) then writeln('PZ Win') else writeln('JMcat Win');

end.

==================================================

如果黑的是最外的，那么cat win,如果黑色在里边那么就是取数问题了

高深的博弈论我一概不知.....jiong

• @ 2009-10-25 15:14:39

Accepted 有效得分：100 有效耗时：0ms

诧异了，水题都wa，因为“W”粗心打成了“w”，悲剧了我的通过率T^T

大家一定要小心……

• @ 2009-09-25 14:17:23

数据太水，我自己的数据过不了的都能ac

• @ 2009-09-19 21:55:39

我不懂。。。。。。

我头文件写的是iostream

后面用的是scanf

竟然过了。。。。。。。。

O(∩_∩)O~

• @ 2009-09-02 22:17:33

…………………………

因为W的大小写，WA了N次…………

• @ 2009-08-26 21:54:24

气死我了！又被隐藏的乱码糊弄，害得屡次查不出错误。

总之，这毕竟是道水题。只能算奇偶分析。

• @ 2009-08-25 13:37:45

博弈论！！！

博弈论！！！

博弈论！！！

• @ 2009-08-24 21:04:57

编译通过...

├ 测试数据 01：答案正确... 0ms

├ 测试数据 02：答案正确... 0ms

├ 测试数据 03：答案正确... 0ms

├ 测试数据 04：答案正确... 0ms

├ 测试数据 05：答案正确... 0ms

├ 测试数据 06：答案正确... 0ms

├ 测试数据 07：答案正确... 0ms

├ 测试数据 08：答案正确... 0ms

├ 测试数据 09：答案正确... 0ms

├ 测试数据 10：答案正确... 0ms

---|---|---|---|---|---|---|---|-

Accepted 有效得分：100 有效耗时：0ms

---|---|---|---|---|---|---|-邪恶的分割线---|---|---|---|---|---|---|---|---|-

• @ 2009-08-16 20:23:56

郁闷。。自己YY出来的XOR方法只能过9个点。。

YY方法：

#include

using namespace std;

int main() {

long a[3],n;

scanf("%ld",&n);

scanf("%ld%ld%ld",&a[0],&a[1],&a[2]);

for (int i=0; i

• @ 2009-08-12 23:05:27

Program zz;

var

n,i,j,x,y,z,t : longint;

a : array[0..3] of longint;

Begin

For i:=1 to 2 do

For j:=i+1 to 3 do

if a[i]>a[j] then begin a[0]:=a[i]; a[i]:=a[j]; a[j]:=a[0]; end;

if (a[2]-a[1]=1)and(a[3]-a[2]=1) then writeln('JMcat Win')

else

if (a[3]-a[2]=1)and(a[1]=0)and(a[3]=n-1) then writeln('JMcat Win')

else

if (a[1]=0)and(a[3]=n-1)and(a[2]-a[1]=1) then writeln('JMcat Win')

else

begin

if odd(n) then writeln('PZ Win')

else writeln('JMcat Win');

end;

End.

• @ 2009-08-05 16:50:39

这题输入只有前两行有用

把黑三角形只有一条边与白三角形相接称为露出

如果一开始黑三角形就露出，cat赢

否则，两人轮流切，谁也不会切那使黑三角形露出来的一刀

直到某人面临三个三角形，此时黑的肯定夹在中间，他输了

没了……

ID
1152

5

1439

514

36%

2