题目描述:

请回答下面的 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("\n");
}
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;
}

【枚举】【lrj黑书】奇怪的问题(古老的智力题)的更多相关文章

  1. POI2001 Gold mine(二叉排序树 黑书经典)

    采矿(KOP) 金矿的老师傅年底要退休了.经理为了奖赏他的尽职尽责的工作,决定送他一块长方形地.长度为S,宽度为W.老师傅可以自己选择这块地.显然其中包含的采金点越多越好.你的任务就是计算最多能得到多 ...

  2. 刘汝佳黑书 pku等oj题目

    原文地址:刘汝佳黑书 pku等oj题目[转]作者:小博博Mr 一.动态规划参考资料:刘汝佳<算法艺术与信息学竞赛><算法导论> 推荐题目:http://acm.pku.edu. ...

  3. POJ 1042 Gone Fishing (贪心)(刘汝佳黑书)

    Gone Fishing Time Limit: 2000MS   Memory Limit: 32768K Total Submissions: 30281   Accepted: 9124 Des ...

  4. 倒水问题(Fill,UVA 10603) lrj白书 p202

    看着lrj的代码自己敲了一遍,还没调试成功.... 有时间再进行完善 /* 状态start到各个状态u1,u2,u3..... 的倒水量分别为u1.dist,u2.dist,u3.dist.... * ...

  5. Uva 548 二叉树的递归遍历lrj 白书p155

    直接上代码... (另外也可以在递归的时候统计最优解,不过程序稍微复杂一点) #include <iostream> #include <string> #include &l ...

  6. Uva 122 树的层次遍历 Trees on the level lrj白书 p149

    是否可以把树上结点的编号,然后把二叉树存储在数组中呢?很遗憾如果结点在一条链上,那将是2^256个结点 所以需要采用动态结构 首先要读取结点,建立二叉树addnode()+read_input()承担 ...

  7. PAT1135(红黑书的判定)

    There is a kind of balanced binary search tree named red-black tree in the data structure. It has th ...

  8. 矩阵连乘 LRJ白书 p141 栈 解析表达式

    #include<iostream> #include<cstdio> #include<cstring> #include<sstream> #inc ...

  9. bzoj2539 丘比特的烦恼、黑书P333 (最优二分图匹配)

      丘比特的烦恼 题目描述 Description 随着社会的不断发展,人与人之间的感情越来越功利化.最近,爱神丘比特发现,爱情也已不再是完全纯洁的了.这使得丘比特很是苦恼,他越来越难找到合适的男女, ...

随机推荐

  1. iOS-NSTimer计时器

    (3) 计时器NSTimer + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget sel ...

  2. SQLPrompt 6.3.0.354 完美破解 安装于 SQL Server 2012/2014

    SQL SERVER 2012格式化 SQL SERVER 2014格式化 SQLPrompt_6.4.0.641 破解版 百度云下载 迅雷下载 百度网盘下载 SQL Prompt 是一款拥有SQL智 ...

  3. 《C语言程序设计》学习笔记(二)

    第八章 函数 函数的基本概念 定义:函数由函数名.参数和函数体组成. 函数定义的一般形式: 类型说明符 函数名(形式参数声明) { [说明与定义部分] 语句: } 说明: 1.类型说明符用来说明函数的 ...

  4. Celery—分布式的异步任务处理系统

    Celery 1.什么是Clelery Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统 专注于实时处理的异步任务队列 同时也支持任务调度 Celery架构 Celery的架构由三部分组 ...

  5. 简单谈一谈Java内部类的使用原因

    使用内部类的原因 学习总得知其所以然,前面的一篇文章中我有提到过关于java内部类的几种用法以及一些示例,但是不明白内部类具体可以做什么,显然学习起来很渺茫,今天的文章简单说一说使用内部类的几个原因, ...

  6. HikariCP连接池及其在springboot中的配置

    主要配置如下: 配置项 描述 构造器默认值 默认配置validate之后的值 validate重置 autoCommit 自动提交从池中返回的连接 true true - connectionTime ...

  7. TypeScript 枚举

    我们常常会有这样的场景,比如与后端开发约定订单的状态开始是0,未结账是1,运输中是2,运输完成是3,已收货是4.这样的纯数字会使得代码缺乏可读性.枚举就用于这样的场景.枚举可以让我们定义一些名字有意义 ...

  8. C++基础--inline

    内联函数的定义: 在函数返回类型前加上inline关键字可以将函数指定为内联函数. 内联函数和普通函数的区别: 当编译器处理调用内联函数的语句时,不会将该语句编译成函数调用的指令,而是直接将整个函数体 ...

  9. Django Simple Captcha的使用

    Django Simple Captcha的使用 1.下载Django Simple Captcha django-simple-captcha官方文档地址 http://django-simple- ...

  10. 1266: gcd和lcm(Java)

    WUSTOJ 1266: gcd和lcm 参考 1naive1的博客 Description   已知a,b的最大公约数为x,也即gcd(a,b)=x; a,b的最小公倍数为y,也即lcm(a,b)= ...