首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何找到伪币?

如何找到伪币?
EN

Code Golf用户
提问于 2023-02-14 01:26:36
回答 4查看 244关注 0票数 7

你是财务主管,你已经收到一枚伪币进入国库的消息。你只知道假币比原来的要轻。

知道你总共有多少硬币,并且只使用一个平衡秤,你需要确定最低数量的重量,以确定哪一个硬币是伪造的,然后才能从国库消失。

您的函数必须只接受一个整数(大于1),并且必须输出2件事情:

  • 没有幸运机会的最小重量数
  • 如何找到伪币的步骤

步骤-当你使用平衡秤的时候

如果没有幸运的机会,就意味着你的数字必须是所需的最低步骤中的最大值。例如,假设你有5个硬币:

  1. 你可以按2,2和1将他们分成3组(这不是一个步骤)
  2. 2.1如果它们相等,那么剩下的硬币是假的2.2。如果其中一组较轻,那么伪币就属于那一组。
  3. 称重每枚剩余硬币(这是一步) 3.1较轻的硬币是伪币

因此,没有幸运机会的最小称重数是2,但幸运机会是1,因为我们可以在第2步找到假币。

输出步骤必须易于理解。请添加如何读取输出步骤的详细说明。例如,前面的示例可以如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[5(2,2) 2(1,1)] - 2

其中:

  • [] -意味着可能的场景
  • x(y,z) - x是指在前一步之后剩下的硬币,(y,z)是指我正在称重的天平的每一边有多少枚硬币(来自x)。
  • 'space' -表示下一步/方案
  • - x --指没有幸运机会的最小重量数。

下面是8的一个示例。输出可以如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[8(3,3) [2(1,1)] [3(1,1)]] - 2

在第一步之后,我们有两种不同的场景,因为:

  1. 如果3组中的2组相等,那么伪币就在2枚硬币组中。
  2. 如果3组中的2组不相等,那么伪币就在3组中的一组上。

在每个场景中,只要称两枚不同的硬币就足以找到假币。不管情况如何,没有幸运机会的最小重量数是2。

以下是2至9枚硬币的可能产出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2 --> [2(1,1)] - 1

3 --> [3(1,1)] - 1

4 --> [4(2,2) 2(1,1)] - 2

5 --> [5(2,2) 2(1,1)] - 2

6 --> [6(2,2) 2(1,1)] - 2

7 --> [7(3,3) 3(1,1)] - 2

8 --> [8(3,3) [2(1,1)] [3(1,1)]] - 2

9 --> [9(3,3) 3(1,1)] - 2

你可以输出任何可能的步骤,如何找到假币。例如,对于10,我们有5种不同的场景。您可以输出其中任何一个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
10 --> [10(5,5) 5(2,2) 2(1,1)] - 3
10 --> [10(4,4) [2(1,1)] [4(2,2) 2(1,1)]] - 3
10 --> [10(3,3) [3(1,1)] [4(2,2) 2(1,1)]] - 3
10 --> [10(2,2) [2(1,1)] [6(3,3) 3(1,1)]] - 3
10 --> [10(1,1) 8(3,3) [2(1,1)] [3(1,1)]] - 3

每种编程语言中最短的代码获胜!

EN

回答 4

Code Golf用户

发布于 2023-02-15 22:57:51

Python,77字节

-4来自@TheThonnu

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
f=lambda n:n<4and[1]or(m:=-~n//3,p:=n-2*m,f(m),f(p),max(f(m)[-1],f(p)[-1])+1)

在网上试试!

如果输入为2或3,则返回[1],这意味着只需要一个琐碎的称重,否则返回一个5元组(此步骤中每边要称的硬币数、此步骤中要放置的硬币数、如果有较轻的边则与硬币的较轻边一起执行的步骤,如果刻度平衡,最坏情况下所需的步骤数)。自然是元组的第三和第四元素。

票数 3
EN

Code Golf用户

发布于 2023-02-16 01:58:53

木炭,44字节

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
⊞υNW⊖⌈υ«≔⊕÷⊖ι³θ≔⁺⁻υ⟦⊕ι⟧⟦θ⁻⊕ι⊗θ⟧υ⟦⪫⟦⊕ιθL↨ι³⟧ 

在网上试试!链接是详细的代码版本。输出三个整数集:剩馀硬币、要称重的硬币(每边)、最坏情况下的剩余称重数。说明:灵感来自@ParclyTaxel的Python答案。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
⊞υN

n硬币开始。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
W⊖⌈υ«

重复,直到只剩下1硬币。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
≔⊕÷⊖ι³θ

计算一下要称多少硬币。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
≔⁺⁻υ⟦⊕ι⟧⟦θ⁻⊕ι⊗θ⟧υ

更新剩余硬币的可能数量。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
⟦⪫⟦⊕ιθL↨ι³⟧ 

输出硬币左,硬币称重和步骤左。

票数 2
EN

Code Golf用户

发布于 2023-04-10 03:29:13

Mathematica,106个字节

@Parcly Taxel的答案改性

黄金版,在网上试试!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Module[{m,p,fm,fp,maxF},If[n<4,{1},m=-⌈BitNot[n]/3;p=n-2*m;{m,p,f@m,f@p,Max[Last@*f@m,Last@*f@p]+1}]]

Ungolfed版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
f[n_] := Module[
  {m, p, fm, fp, maxF},
  If[n < 4,
    {1},
    m = -Ceiling[BitNot[n]/3];
    p = n - 2*m;
    fm = f[m];
    fp = f[p];
    maxF = Max[Last[fm], Last[fp]] + 1;
    {m, p, fm, fp, maxF}
  ]
]


f[73]//Print
票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/257803

复制
相关文章
Sass占位符
在Sass中,我们引入了占位符“%placeholder”来进一步优化“@extend”。我们先来看一个例子。
Qwe7
2022/05/14
1.1K0
SQL注入、占位符拼接符
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
小马哥学JAVA
2022/11/21
2.2K0
golang-占位符
Printf 格式化输出 通用占位符: v 值的默认格式。 %+v 添加字段名(如结构体) %#v  相应值的Go语法表示 %T 相应值的类型的Go语法表示 %% 字面上的百分号,并非值的占位符  布尔值: %t true 或 false 整数值: %b 二进制表示 %c 相应Unicode码点所表示的字符 %d 十进制表示 %o 八进制表示 %q 单引号围绕的字符字面值,由Go语法安全地转义 %x 十六进制表示,字母形式为小写 a-f %X 十六进制表示,字母形式为大写 A-F %U Unicode格式:U+1234,等同于 "U+%04X" 浮点数及复数: %b 无小数部分的,指数为二的幂的科学计数法,与 strconv.FormatFloat中的 'b' 转换格式一致。例如 -123456p-78 %e 科学计数法,例如 -1234.456e+78 %E 科学计数法,例如 -1234.456E+78 %f 有小数点而无指数,例如 123.456 %g 根据情况选择 %e 或 %f 以产生更紧凑的(无末尾的0)输出 %G 根据情况选择 %E 或 %f 以产生更紧凑的(无末尾的0)输出 字符串和bytes的slice表示: %s 字符串或切片的无解译字节 %q 双引号围绕的字符串,由Go语法安全地转义 %x 十六进制,小写字母,每字节两个字符 %X 十六进制,大写字母,每字节两个字符 指针: %p 十六进制表示,前缀 0x 这里没有 'u' 标记。若整数为无符号类型,他们就会被打印成无符号的。类似地,这里也不需要指定操作数的大小(int8,int64)。 对于%v来说默认的格式是: bool: %t int, int8 etc.: %d uint, uint8 etc.: %d, %x if printed with %#v float32, complex64, etc: %g string: %s chan: %p pointer: %p 由此可以看出,默认的输出格式可以使用%v进行指定,除非输出其他与默认不同的格式,否则都可以使用%v进行替代(但是不推荐使用)
nbsp-nbsp
2020/09/22
1.6K0
浅谈mybatis中的占位符
浅谈mybatis中的占位符 #{}占位符 ​ 把传入的数据都当成字符串,会对传入的数据自动加上引号 例如: select * from emp where name=#{name} --会被解析转义成 select * from emp where name="name" ${}占位符 ​ 不会经过转义,直接把值传入sql中 例如: select * from emp where name=${name} --不会被转义 select * from emp where name=name 但是需要注意的
许喜朝
2020/08/11
1.6K0
[Go]fmt Sprintf的格式占位符%
普通占位符 占位符 说明 举例 输出 %v 相应值的默认格式。 Printf("%v", people) {zhangsan} %+v 打印结构体时,会添加字段名 Printf("%+v", people) {Name:zhangsan} %#v 相应值的Go语法表示 Printf("#v", people) main.Human{Name:"zhangsan"} %T 相应值的类型的Go语法表示 Printf("%T", people) main.Human %% 字面上的百分号,并非值的占位符 Prin
唯一Chat
2021/04/09
3.5K0
Swift 中的类型占位符
Swift 的类型推断能力从一开始就是语言的核心部分,它极大地减少了我们在声明有默认值的变量和属性时手动指定类型的工作。例如,表达式var number = 7不需要包含任何类型注释,因为编译器能够推断出值7是一个Int,我们的number变量应该被相应的类型化。
Swift社区
2022/07/05
1.7K0
【Python】字符串 ③ ( Python 字符串格式化 | 单个占位符 | 多个占位符 | 不同类型的占位符 )
在上一篇博客 【Python】字符串 ② ( 字符串拼接 | 字符串与非字符串不能直接拼接 | TypeError: can only concatenate str (not “int“) to str ) 中 , 介绍了 使用 + 运算符拼接字符串 的方法 , 该方法有一定的弊端
韩曙亮
2023/04/08
1.5K0
【Python】字符串 ③ ( Python 字符串格式化 | 单个占位符 | 多个占位符 | 不同类型的占位符 )
Swift 中的类型占位符
Swift 的类型推断能力从一开始就是语言的核心部分,它极大地减少了我们在声明有默认值的变量和属性时手动指定类型的工作。例如,表达式var number = 7不需要包含任何类型注释,因为编译器能够推断出值7是一个Int,我们的number变量应该被相应的类型化。
韦弦zhy
2022/04/26
1.5K0
python中占位符的使用
小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点,并用字符串格式化显示出'xx.x%',只保留小数点后1位:
py3study
2020/01/10
2.2K0
React 中的占位符 Fragment
在 React 项目中, render 方法只能有一个根元素,一般都是 <div> <div/> ,然后在里面写上我们的组件,渲染到浏览器一看,除了我们想要显示的组件,外面还套着一层 div ,如果在写项目的时候,套了很多曾组件,那么每一层都会多出来一个父级元素 div ,不美观,而且在调整样式的时候会有些麻烦
子舒
2022/06/09
1.7K0
配置文件占位符
1、随机数 ${random.value}、${random.int}、${random.long} ${random.int(10)}、${random.int[1024,65536]} 2、占位符获取之前配置的值,如果没有可以用:指定默认值 person.lastName=张三${random.uuid} person.age=${random.int(10)} person.birth=2017/12/15 person.boss=false person.maps.k1=v1 person.maps
桑鱼
2020/03/18
9810
图片加载失败占位符[通俗易懂]
当网络不佳加载图片时会出现加载失败或者延时加载的情况,此时原本的图片位置会显示空白状态,这造成了不好的用户体验,所以我们需要加一个图片占位符。 有两种方式可以实现:
全栈程序员站长
2022/09/05
3K0
函数或条件子句的占位符
于一般不推荐在遍历数据集合时直接修改原数据集合来获取我们想要的数据集合,这样不安全且不够灵活。推荐在遍历原数据集合时根据条件创建一个新的数据集合,遴选公务员而这正是Python语言中for语句的强大之处。
用户7737280
2021/12/02
8160
MyBatis实现SQL占位符替换
博主记得在一个周五快下班的下午,产品找到我(为什么总感觉周五快下班就来活 😂),跟我说有几个业务列表查询需要加上时间条件过滤数据,这个条件可能会变,不保证以后不修改,这个改动涉及到多个列表查询,于是博主思考了一会想了几种实现方案,
wayn
2023/08/28
1.1K0
MyBatis实现SQL占位符替换
【Python】f-String 占位符
%格式化相较于f-string格式化不够自由。但是%格式化把所有需要填入的信息放到待格式化字符串的后面,在一些时候是更加合适的方式。
杨丝儿
2022/02/25
2K0
继承、占位符和混合宏
很多初学者刚刚接触的时候,都容易纠结什么时候用混合宏,什么时候用继承,然后什么时候用占位符。其实,这3个都有它们自身的优缺点。这一节我们来详细探讨一下这3个在实际开发中的不同。
Qwe7
2022/05/15
8610
Golang之fmt格式“占位符”
golang的fmt包实现了格式化I/O函数: package main import "fmt" type Human struct { Name string } func main() { //普通占位符 var people = Human{Name: "咸鱼兆"} // %+v 添加字段名,输出相应值的默认格式 fmt.Printf("%+v\n", people) //相应值用go语法形式输出 fmt.Printf("%#v", pe
超蛋lhy
2018/08/31
1.1K0
java之mybatis之占位符
2. #{} 占位符是为了获取值,获取的值用在 where 语句后,insert 语句后,update 语句。
Vincent-yuan
2019/09/11
1.6K0
Spring中PropertyPlaceholderConfigurer替换占位符的问题
多个Maven项目聚合的时候,每个maven都有自己的配置文件,并且都用了PropertyPlaceholderConfigurer替换占位符,然后启动的时候一直报错,说替换失败;问题症结就是 spirng配置多个PropertyPlaceholderConfigurer的问题
石臻臻的杂货铺[同名公众号]
2021/07/14
1.4K0
Mybatis处理动态占位符实现
老乡式打招呼 -> “你好,我也是 xxx 的,我们是老乡呀!”(老乡见老乡,少来这套,来了就是深圳人)
GreizLiao
2020/03/28
1.7K0

相似问题

SSAS事实和维度关系

10

在SSAS上查询维度/事实表ID

12

如何将SSAS事实表用作维度

14

SSAS -维度和事实表历史数据-将事实表与维度表进行映射

13

如何在ssas中设计维度和事实表

16
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文