Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
Register

屈指一数,不是只有八种情况吗?为什么WA呢,请指教...

Posted by yuanyirui at 2007-03-04 18:30:26 on Problem 1176
```#include <stdio.h>
#include <string.h> //每次变换灯的变化都是独立于其他灯,相互之间没有干扰
char str[8][101]={ //一百盏灯用题目的四种条件变换，只能取下面八种情况，不知道是不是只有这八种情况？      //1 2 3 4
"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",//1 0 0 0 奇
"0011100011100011100011100011100011100011100011100011100011100011100011100011100011100011100011100011",//0 0 1 1 偶
"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101",//0 1 0 0 奇
"0110110110110110110110110110110110110110110110110110110110110110110110110110110110110110110110110110",//0 0 0 1 奇
"1001001001100100100110010010011001001001100100100110010010011001001001100100100110010010011001001001",//1 0 0 1 偶
"1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010",//0 0 1 0 奇
"1100011100011100011100011100011100011100011100011100011100011100011100011100011100011100011100011100",//0 1 0 1 偶
"1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",//0 0 0 0 偶
};
int oo[8]={1,0,1,1,0,1,0,0}; //字符串的奇偶次数
int main()
{
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
int i,j,N,C,on,off,opt[8];
while(scanf("%d",&N)!=EOF){
scanf("%d",&C);
C=C%2;
for(i=0;i<8;i++) opt[i]=1;  //假设全部符合条件
while(1){
scanf("%d",&on);
if(on==-1) break;
for(j=0;j<8;j++)
if(str[j][on-1]=='0') opt[j]=0; //不符合灯 "打开" 的条件
}
while(1){
scanf("%d",&off);
if(off==-1) break;
for(j=0;j<8;j++)
if(str[j][off-1]=='1') opt[j]=0; //不符合灯 "关闭" 的条件
}
for(i=0;i<8;i++){
if(opt[i]==1 && C==oo[i]){      //去掉不符合奇偶条件
for(j=0;j<N;j++) printf("%c",str[i][j]);
printf("\n");
}
}
}
}
```

Followed by: