zoukankan      html  css  js  c++  java
  • 【枚举】【lrj黑书】奇怪的问题(古老的智力题)

    题目描述:

    请回答下面的 10 个问题,你的回答应保证每题惟有你的选择是正确的。

    ⑴ 第一个答案是b 的问题是哪一个?
    (a )2 ( b ) 3 ( c ) 4 ( d ) 5 ( e ) 6
    ⑵ 恰好有两个连续问题的答案是一样的,它们是:
    ( a ) 2 , 3 ( b ) 3, 4 ( c ) 4 ,5 ( d ) 5 ,6 ( e ) 6 ,7 
    ⑶ 本问题答案和哪一个问题的答案相同?
    ( a ) 1 ( b ) 2 ( c ) 4 ( d ) 7 ( e ) 6
    ⑷ 答案是a 的问题的个数是:
    ( a ) 0 ( b ) 1 ( c ) 2 ( d ) 3 ( e ) 4
    ⑸ 本问题答案和哪一个问题的答案相同?
    ( a ) 10 ( b ) 9 ( c ) 8 ( d ) 7 ( e ) 6
    ⑹ 答案是a 的问题的个数和答案是什么的问题的个数相同?
    ( a ) b ( b ) c ( c ) d ( d ) e ( e ) 以上都不是
    ⑺ 按照字母顺序,本问题的答案和下一个问题的答案相差几个字母?
    ( a ) 4 ( b ) 3 ( c ) 2 ( d ) 1 ( e ) 0(注: a和b相差一个字母)
    ⑻ 答案是元音字母的问题的个数是:
    ( a ) 2 ( b ) 3 ( c ) 4 ( d ) 5 ( e )6(注:A和E 是元音字母)
    ⑼ 答案是辅音字母的问题的个数是:
    ( a )一个质数 ( b )一个阶乘数 ( c )一个平方数 ( d )一个立方数 ( e )5的倍数
    ⑽ 本问题的答案是:
    ( a ) a ( b ) b ( c ) c ( d ) d ( e ) e

    实际答案:C D E B E E D C B A

    求解代码:

    #include <bits/stdc++.h>

    #define REP(i,n) for(int i=0;i<n;i++)
    #define REPAB(i,a,b) for(int i=a;i<=b;i++)
    #define REPN(i,a,n) for(int i=a;i<a+n;i++)

    #define MAXN 15

    int ans[MAXN];
    //problem.no from 1 to 10
    //ans.no from 1 to 5
    int a3[]={0,1,2,4,7,6};
    int a5[]={0,10,9,8,7,6};
    int a91[]={0,3,6,4,8,0};
    int a92[]={0,7,0,9,0,0};
    bool okay(){
    int k=0;
    //p1
    if(ans[ans[1]+1]!=2)return 0;
    REPN(i,1,6){
    if(ans[i]==2){
    if(i!=ans[1]+1)return 0;
    break;
    }
    if(i==6&&ans[i]!=2)return 0;
    }
    //p2
    if(ans[ans[2]+1]!=ans[ans[2]+2])return 0;
    REPN(i,1,5){
    if(i!=ans[2]){
    if(ans[i+1]==ans[i+2])return 0;
    }
    }
    //p3
    if(ans[a3[ans[3]]]!=ans[3])return 0;
    REPN(i,1,5){
    if(i!=ans[3])
    if(ans[3]==ans[a3[ans[3]]]);//return 0;
    }
    //p4
    REPAB(i,1,10){
    if(ans[i]==1)k++;
    }
    if(ans[4]-1!=k)return 0;
    k=0;
    //p5
    if(ans[a5[ans[5]]]!=ans[5])return 0;
    REPN(i,1,5){
    if(i!=ans[5])
    if(ans[5]==ans[a5[ans[5]]]);//return 0;
    }
    //p6
    k=0;
    REPN(i,1,10)if(ans[i]==1)k++;
    int kk=0;
    REPN(i,1,10){
    if(ans[i]==ans[6]+1)kk++;
    }
    if(ans[6]==5||kk==k);
    else return 0;
    REPN(i,1,5){
    kk=0;
    if(i==ans[6]||i==5)continue;
    REPN(j,1,10){
    if(ans[j]==i+1)kk++;
    }
    if(kk==k)return 0;
    }
    //p7
    if(5-ans[7]==ans[8]-ans[7]||5-ans[7]==ans[7]-ans[8]);
    else return 0;
    //p8
    k=0;
    REPN(i,1,10){
    if(ans[i]==1||ans[i]==5)k++;
    }
    if(ans[8]+1!=k)return 0;
    k=10-k;
    //p9
    if(k==a91[ans[9]]||k==a92[ans[9]]);
    else return 0;
    return 1;
    }
    void dfs(int n){
    if(n==11){
    if(okay()){
    REPN(i,1,10){
    printf("%d ",ans[i]);
    }
    printf(" ");
    }
    return;
    }
    REPN(i,1,5){
    ans[n]=i;
    dfs(n+1);
    }
    return;
    }
    #define LOCAL
    int main(){
    #ifdef LOCAL
    freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);
    #endif // LOCAL
    dfs(1);
    return 0;
    }

  • 相关阅读:
    Linux上面执行 Windows 命令(比如 重启服务)的简单方法
    Linux 通过cksum 来判断文件是否是相同
    Linux 根据端口快速停止服务并启动的办法
    Delphi控件开发浅入深出(三)
    Delphi 资源文件( .res)
    C++中模块(Dll)对外暴露接口的方式
    delphi Align属性
    cport串口控件的应用
    两款工控控件对比评测:Iocomp和ProEssentials
    Android 将ARGB图片转换为灰度图
  • 原文地址:https://www.cnblogs.com/mothyrose/p/6790907.html
Copyright © 2011-2022 走看看