鬼谷子问徒

一道腾讯面试题涉及到类似鬼谷子问徒的逻辑问题,但存在变化。甲乙两人知道两数之和与乘积,通过对话逐步揭示答案。原题在2到99之间,而面试题允许1到30并可能包含重复。分析发现,由于甲的第一次发言,数对可能是11或17,但乙无法唯一确定。进一步分析,考虑到1的存在,最终确定答案为(2,2)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

半夜睡觉前和舍友聊天,舍友说了一道腾讯面试题,大概是这样的:

从1到30中取出两个数(可以重复),我们把两个数的和告诉甲,俩个数的积告诉乙,然后甲乙之间有如下对话:

甲:我不知到这两个数,但是我肯定你也不知道!

乙:我本来不知道,但是现在我知道了!

甲:那个我也知道了!!


卧槽!这他喵的什么面试题?完了不百度一下影响睡眠!!!!

手机百度之~~原来这个题还是有点来头的!!跟一个叫做“鬼谷子问图”逻辑题很相似,但是它是从2到99中选两个数!百度百科有详细解答!

但是,上面腾讯的面试题似乎有些变换,按照百科中的思路没法得到结果,不知道是题目叙述的有问题还是什么的!

这是,鬼谷子问徒的解:

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
//甲的得到的数字只能是下面几种
int S[10000];
bool IsPrime(int number)
{
	number = abs(number);  
	if (0 == number || 1 == number)  
		return true;  
	int divisor=(int)sqrt((double)number);
	while(number%divisor != 0)--divisor;    
	return 1 == divisor;  
}
int GetS()
{
	int n=0,s,flag;
	for(s=5;s<57;s+=2)
	{
		flag=true;
		for(int x=2;x<=s/2;x++)
		{
			if(IsPrime(x)&&IsPrime(s-x))
			{
				flag=false;
				break;//俩个数都是质数,一定不是甲手中的数
			}
		}
		if(flag)
			S[n++]=s;
	}
	return n;
}
int main(int argc,ch
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值