秋招笔试算法题——电容充电

本文讨论了秋招笔试中的一道算法题,涉及电容充电问题的解决方案。通过裴蜀定理和扩展欧几里德算法,确定在满足特定条件的情况下,使得电容电量达到目标值所需的最少操作次数。对于无法达成的情况,给出了判断标准。
摘要由CSDN通过智能技术生成

秋招笔试算法题——电容充电

牛客网《笔试真题精选2019》
字节跳动2018秋招笔试题4

【题目描述】有一台用电容组成的计算器,其中每个电容组件都有一个最大容量值(正整数)。
对于单个电容,有如下操作指令:
指令1:放电操作——把该电容当前电量值清零
指令2:充电操作——把该电容当前电量补充到其最大容量值
对于两个电容A和B,有如下操作指令:
指令3:转移操作——从A中尽可能多的将电量转移到B,转移不会有电量损失,如果能够充满B的最大容量,那剩余的电量仍然会留在A中

现在已知有两个电容,其最大容量分别为a和b其初始状态都是电量值为0,希望通过一系列的操作可以使其中某个电容(无所谓哪一个)中的电量值等于c(c也是正整数),这一系列操作所用的最少指令条数记为M,如果无论如何操作,都不可能完成,则定义此时M=0。
显然对于每一组确定的a、b、c,一定会有一个M与其对应。

输入描述:
每组测试样本的输入格式为:
第一行是一个正整数N
从第二行开始,每行都是3个正整数依次组成一组a、b、c,一共有N组
输出描述:
输出为N行,每行打印每一组对应的M
备注:
数据范围:
N: 0 &lt; N &lt; 100 0 &lt; N &lt; 100 0<N<100
a、b、c:
0 &lt; a 、 b 、 c &lt; 1 0 5 ( 50 % ) 0 &lt; a、b、c &lt; 10^5(50\%) 0<abc<10550%
0 &lt; a 、 b 、 c &lt; 1 0 7 ( 30 % ) 0 &lt; a、b、c &lt; 10^7(30\%) 0<abc<10730%
0 &lt; a 、 b 、 c &lt; 1 0 9 ( 20 % ) 0 &lt; a、b、c &lt; 10^9(20\%) 0<abc<10920%
输入示例:

2
3 4 2
2 3 4

输出示例:

4
0

说明:
对于(3,4,2),最少只需要4个指令即可完成:
(设最大容量为3的是A号电容,另一个是B号电容)

  1. 充电A
  2. 转移A->B
  3. 充电A
  4. 转移A->B
    此时A中当前电量为2,操作完成,所以输出4。
    对于(2,3,4),显然不可能完成,输出0。

解析:
c &gt; a c &gt; a c>a c &gt; b c &gt; b c>b,则显然不可能完成,M为0。
c = a c = a c=a c = b c = b c=b,则显然一次操作可完成,M为1。
现在考虑剩余情况,即 c &lt; M a x ( a , b ) c &lt; Max(a, b) c&

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值