`

从N个变量中找出一个错误变量的方法

 
阅读更多

假设有N包咖啡,里面有一包咖啡是掺和了沙子的,可以将咖啡放到水杯里融化,如果十分钟后,被子里有沙子沉淀的,那么那包就是有问题的咖啡。问题是:在十分钟之内,需要最少多少个杯子能检验出那包有问题的咖啡呢?

 

【思路】

可以利用二进制数的特点来解答。将N表示成二进制,那么二进制的如果能确定出现问题的咖啡在二进制位的哪些(哪个)位上,即使解答。而要确定哪些位,只需要知道二进制的长度即可。(将咖啡搀和起来融化)

 

【实例】

 

假设8包,3个碗(log_2_8=3),给“糖”编号0~7 
000:0 
001:1 
010:2 
011:3 
100:4 
101:5 
110:6 
111:7 
 
第一个碗中放4~7号,第二个碗中放2367号,第三个碗中放1357号。 
 
过十分钟看效果: 
都没有沙子:0号有问题; 
第一个有沙子,其他无:4号有问题; 
第二有沙子,其他无:2号; 
第三有沙子,其他不:1号; 
第一第二有沙子,第三无:6号; 
第二第三有沙子,第一无:3号; 
第一第三有沙子,第二无:5号; 
有沙子:7号。 

分享到:
评论

相关推荐

    找出给定一系列整数中的最小值——C语言代码

    下面是一个简单的C语言代码示例,用于找出数组中的最小值: ```c #include #define SIZE 10 // 假设数组大小为10 int find_min(int arr[], int n) { int min_val = arr[0]; // 初始化最小值为数组第一个元素 ...

    c语言+从键盘输入10个无序的整数,存放在数组中,找出数组中最大值与最小值的所在的位置,并输出数组元素所在的位置与数组元素的值

    这个修正后的程序现在能够正确处理10个无序整数,找出最大值和最小值及其在数组中的位置。在实际编程中,我们还需要添加错误处理,例如检查用户是否输入了10个整数,以及处理可能的输入错误。然而,对于这个基础示例...

    c语言程序找出其中的最大值和最小值问题

    在C语言中,找出数组中的最大值和最小值是一项常见的任务,这有助于理解和掌握基本的循环、条件判断以及数组操作。下面将详细解释这个程序的工作原理及其涉及的关键知识点。 首先,程序通过`#include<stdio.h>`引入...

    语言程序设计课后习题答案

    面向对象方法中的对象,是系统中用来描述客观事物的一个实体,它是用来构成系统的一个基本单位,由一组属性和一组行为构成。 面向对象的方法将数据及对数据的操作方法放在一起,作为一个相互依存、不可分离的整体--...

    原型的函数prime,用来判断整数n是否为素数

    根据题目要求,我们需要编写一个主函数,该函数能够接收一个大于4的偶数`d`作为输入,并找出所有满足`d = d1 + d2`的数对`(d1, d2)`,其中`d1`和`d2`都必须是素数。 #### 算法步骤 1. **初始化变量**:设定一个输入...

    数字逻辑电路期末考试试卷及答案.doc

    - **解析**: 卡诺图化简是一种常用的逻辑函数简化方法,它可以帮助我们直观地找出最简的逻辑表达式。对于给定的逻辑函数,首先绘制卡诺图,然后根据相邻格子的值进行合并,最终得出简化后的逻辑表达式。 22. **D...

    找到年龄最大的人,并输出。请找出程序中有什么问题。

    这里需要注意的是,在 C 语言中,`#define` 是预处理指令的一种,用于定义宏,这里的 `#define N 4` 即定义了一个名为 `N` 的宏,其值为数字 `4`。 接下来定义了一个名为 `man` 的结构体类型,其中包含了两个成员:...

    数据结构几种排序

    算法每次从未排序部分中找出最小(或最大)元素放入已排序部分的末尾,直至所有元素均被排序。 **代码解析:** ```cpp template void selectionSort(vector<T>& a) { int num = a.size(); T temp; int p, i; ...

    python基础试题(含答案)word.doc

    1. Python语法错误识别:在提供的选择题中,第一题是一个简单的Python程序,其中包含了几个常见的错误。程序如下: ```python 1a=3 b=input() c=a+b print("c") ``` 这个程序的错误在于: - 变量名不能以数字开头,...

    处理Shell脚本中带有空格的变量(bash脚本)

    一种方法是临时设置IFS为空行,这样`for`循环将会把每一行作为一个单独的元素处理。我们可以使用`echo -en`命令来生成特定的字符串,然后将其赋值给IFS: ```bash IFS_BACKUP=$IFS # 保存原始IFS值 IFS=$(echo -en ...

    Java经典算法题:查找数组中的最大值 非常清晰的代码结构

    在`findMax`方法中,我们声明了一个变量`max`,初始值为数组的第一个元素`arr[0]`。然后,我们遍历数组的其余部分(从索引1开始),对于每个元素,我们与当前的`max`值进行比较。如果当前元素大于`max`,我们就更新`...

    从键盘任意输入N个整数 排序后 二叉搜索查询 从键盘输入的某个任意整数的序号

    j++){ // 内循环,每一次找出最大值的过程中需要进行的循环次数 if(a[j]>a[j+1]){ t=a[j];a[j]=a[j+1];a[j+1]=t; // 找到最大值 } } } ``` ### 3. 二分查找算法 二分查找是在有序数组中查找某一特定元素的有效...

    fx.rar_一元N次方程

    本主题聚焦于"一元N次方程"的计算,这是一个在数学和科学计算中常见的问题。在给定的"fx.rar_一元N次方程"压缩包中,包含了一个名为"计算p(x).cpp"的C++源代码文件,它显然是用于解决这类问题的程序。 一元N次...

    错误:找不到或无法加载主类com.xxx.xxx.Application(完美解决)

    在Java编程环境中,我们经常会遇到一个令人困扰的错误:“错误:找不到或无法加载主类com.xxx.xxx.Application”。这个错误通常发生在尝试运行Java应用程序时,它表明JVM(Java虚拟机)无法找到或正确加载指定的主类...

    (x/1!)+(x*x*x/3!)+(5个x相乘/5!)+……+(2*n-1)个x相乘/(2*n-1)!)

    首先,我们需要定义一个名为`fun`的函数,该函数接受两个整型参数x和n,返回一个浮点型值。函数的主要逻辑是这样的: 1. 如果n等于1,那么直接返回x,因为这是级数的第一项。 2. 否则,计算(2n-1)的阶乘,然后计算x...

    2020高中数学 第2章 第2节 算法的基本结构及设计 变量与赋值同步练习(1)北师大版必修3.doc

    4. 找出1~100间能被3或5整除的整数:可以使用循环结构,每次检查当前数是否能被3或5整除,若能则记录下来。 5. 搜索高于85分的成绩:遍历分数列表,比较每个分数,如果大于85则输出。 6. 交换两个变量A和B的值:...

    GCC常见错误解析

    有时候,一个简单的语法错误可能会触发一系列错误提示,这时候要保持冷静,集中精力解决最初的语法问题。如果不确定具体错误的原因,可以参考C语言基础教程来帮助定位问题。 ##### 第二类:头文件错误 **错误信息...

Global site tag (gtag.js) - Google Analytics