posts - 4,  comments - 0,  trackbacks - 0
题目来源:古老的智力题
请回答下面10个问题,你的回答应保证每题惟有你的选择是正确的。
(1)第一个答案是b的问题是哪一个?
(a) 2    (b) 3    (c) 4    (d) 5    (e) 6
(2)恰好有两个连续问题的答案是一样的,它们是:
(a) 2,3    (b) 3,4    (c) 4,5    (d) 5,6    (e) 6,7
(3)本问题答案和哪一个问题的答案相同?
(a) 1    (b) 2    (c) 4    (d) 7    (e) 6
(4)答案是a的问题的个数是:
(a) 0    (b) 1    (c) 2    (d) 3    (e) 4
(5)本问题答案和哪一个问题的答案相同?
(a) 10    (b) 9    (c) 8    (d) 7    (e) 6
(6)答案是a的问题的个数和答案是什么的问题的个数相同?
(a) b    (b) c    (c) d    (d) e    (e) 以上都不是
(7) 按照字母顺序,本问题的答案和下一个问题的答案相差几个字母?
(a) 4    (b) 3    (c) 2    (d) 1    (e) 0    (注:a和b相差一个字母)
(8)答案是元音字母的问题的个数是:
(a) 2    (b) 3    (c) 4    (d) 5    (e) 6    (注:a和e是元音字母)
(9)答案是辅音字母的问题的个数是:
(a) 一个质数 (b) 一个阶乘数 (c) 一个平方数 (d) 一个立方数 (e) 5的倍数
(10)本问题的答案是:
(a) a    (b) b    (c) c    (d) d    (e) e

很早之前貌似在一本数学趣味书上看过...当时没能推出来...今天突然发现黑书上竟然也有这道题...为了好奇心...写了个程序跑了一下...
可能有一些值得注意或者有歧义的地方,标注一下:
(1)题目要求“你的回答应保证每题惟有你的选择是正确的”,我的理解是在某一个固定的答案下,不能有某题是两个答案都符合的。
    比如第二题,不能2,3,4都同一个答案。这样的话第二题既能选a又能选b,不符合题意。(如果不按这种理解的话会跑出很多个答案来...)
(2)第七题中的“相差”一开始理解错了...以为是a和b相差1,b和a就相差-1...于是第八题就选e了...最后发现这样跑不出来...就修改了理解...
    应该是比如选c,那么与c相差两个字母的可以是a或者e...

最后跑出来的答案是:c d e b e e d c b a
目测好像是对的...

代码如下:
  1#include<cstdio>
  2int i[11];
  3bool judge1()
  4{
  5    if(i[1]==1&&i[2]==2)    return 1;
  6    if(i[1]==2&&i[3]==2&&i[2]!=2)    return 1;
  7    if(i[1]==3&&i[4]==2&&i[2]!=2&&i[3]!=2)    return 1;
  8    if(i[1]==4&&i[5]==2&&i[2]!=2&&i[3]!=2&&i[4]!=2)    
  9        return 1;
 10    if(i[1]==5&&i[6]==2&&i[2]!=2&&i[3]!=2&&i[4]!=2&&i[5]!=2)    
 11        return 1;
 12    return 0;
 13}

 14
 15bool judge2()
 16{
 17    bool flag;int k,j;
 18    for(j=1;j<=5;j++)
 19        if(i[2]==j&&i[j+1]==i[j+2]){
 20            for(k=2,flag=1;k<=6;k++){
 21                if(k==j+1)    continue;
 22                if(i[k]==i[k+1]){flag=0;break;}
 23            }

 24            if(flag)    return 1;
 25        }

 26    return 0;
 27}

 28
 29bool judge3()
 30{
 31    if(i[3]==1&&i[3]==i[1])    return 1;
 32    if(i[3]==2&&i[3]==i[2])    return 1;
 33    if(i[3]==3&&i[3]==i[4])    return 1;
 34    if(i[3]==4&&i[3]==i[7])    return 1;
 35    if(i[3]==5&&i[3]==i[6])    return 1;
 36    return 0;
 37}

 38
 39bool judge4()
 40{
 41    int cnt=0,k,j;
 42    for(j=1;j<=10;j++)
 43        if(i[j]==1)
 44            cnt++;
 45    for(k=1;k<=5;k++)
 46        if(i[4]==k&&cnt==k-1)
 47            return 1;
 48    return 0;
 49}

 50
 51bool judge5()
 52{
 53    for(int j=1;j<=5;j++)
 54        if(i[5]==j&&i[5]==i[11-j])
 55            return 1;
 56    return 0;
 57}

 58
 59bool judge6()
 60{
 61    int cnt[6]={0},k,j;bool flag;
 62    for(j=1;j<=10;j++)    cnt[i[j]]++;
 63    for(j=1;j<=4;j++){
 64        if(i[6]==j&&cnt[1]==cnt[1+j]){
 65            for(k=2,flag=1;k<=5;k++){
 66                if(k==1+j)    continue;
 67                if(cnt[1]==cnt[k]){flag=0;break;}
 68            }

 69            if(flag)    return 1;
 70        }

 71    }

 72    if(i[6]==5&&cnt[1]!=cnt[2]&&cnt[1]!=cnt[3]
 73    &&cnt[1]!=cnt[4]&&cnt[1]!=cnt[5])    
 74        return 1;
 75    return 0;
 76}

 77
 78bool judge7()
 79{
 80    if(i[7]==1&&i[8]==5)    return 1;
 81    if(i[7]==2&&i[8]==5)    return 1;
 82    if(i[7]==3&&(i[8]==1||i[8]==5))    return 1;
 83    if(i[7]==4&&(i[8]==3||i[8]==5))    return 1;
 84    if(i[7]==5&&i[8]==5)    return 1;
 85    return 0;
 86}

 87
 88bool judge8()
 89{
 90    int vowel=0,j;
 91    for(j=1;j<=10;j++)
 92        if(i[j]==1||i[j]==5)
 93            vowel++;
 94    for(j=1;j<=5;j++)
 95        if(i[8]==j&&(vowel==j+1))    
 96            return 1;
 97    return 0;
 98}

 99
100bool judge9()
101{
102    int csnt=0,j;
103    for(j=1;j<=10;j++)
104        if(i[j]==2||i[j]==3||i[j]==4)
105            csnt++;
106    if(i[9]==1&&(csnt==2||csnt==3||csnt==5||csnt==7))    
107        return 1;
108    if(i[9]==2&&(csnt==1||csnt==2||csnt==6))    
109        return 1;
110    if(i[9]==3&&(csnt==0||csnt==1||csnt==4||csnt==9))    
111        return 1;
112    if(i[9]==4&&(csnt==0||csnt==1||csnt==8))    
113        return 1;
114    if(i[9]==5&&(csnt%5==0))    return 1;
115    return 0;
116}

117
118void print()
119{
120    for(int j=1;j<=10;j++)
121        printf("%c ",i[j]+'a'-1);
122    puts("");
123}

124
125int main()
126{
127    for(i[1]=1;i[1]<=5;i[1]++)
128    for(i[2]=1;i[2]<=5;i[2]++)
129    for(i[3]=1;i[3]<=5;i[3]++)
130    for(i[4]=1;i[4]<=5;i[4]++)
131    for(i[5]=1;i[5]<=5;i[5]++)
132    for(i[6]=1;i[6]<=5;i[6]++)
133    for(i[7]=1;i[7]<=5;i[7]++)
134    for(i[8]=1;i[8]<=5;i[8]++)
135    for(i[9]=1;i[9]<=5;i[9]++)
136    for(i[10]=1;i[10]<=5;i[10]++)
137    if(judge1()&&judge2()&&judge3()&&judge4()&&judge5()&&judge6()&&judge7()&&judge8()&&judge9())
138        print();
139    return 0;
140}
posted on 2012-01-19 19:59 NKU->lkjslkjdlk 阅读(211) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 
<2012年1月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜