刷题总结——(一道很妙的题)Resistance(ssoj 欧几里得 )
题解:
题目背景
151006 T1
题目描述
Picks 喜欢电路。这天他在研究元电路的时候,需要一个阻值为 (p/q)Ω 的电阻,然而他家中只有一大堆电阻为 1Ω 电阻。由于技术问题,Picks 每次只能把一个电阻串联或并联进整个电路。而 Picks 拿着这么大一堆电阻觉得很浪费,于是他找到你,希望你能告诉他最少用多少个电阻才能拼出他所需要的电阻。
输入格式
输入一行,为两个正整数 P 和 Q 。
输出格式
输出一行一个整数,即最少要用的电阻个数。
样例数据 1
备注
【样例说明】
要得到一个 (3/2)Ω 的电阻,可以用两个电阻并联,再串联一个电阻。
【数据范围】
30% 的数据:1≤P,Q≤10;
100% 的数据:1≤P,Q≤1018。
题解:
引用ssoj官网题解:
考虑现在我们的电阻为 a/b Ω,串联一个电阻上去,电阻变为(a+b)/b Ω.
并联一个电阻上去,电阻变为 a/(a+b) Ω 。
假设我们需要的电阻为 P/Q Ω,每次我们都能将 P 减小到比 Q 小,也能将 Q 减小到比 P 小。
那么,我们能进行的操作为:P/Q Ω → (P mod Q)/Q Ω 或 P/Q Ω → P/(Q mod P) Ω
这样的最优性是显然的。
考虑这个操作,会发现和 Euclid(欧几里得) 算法的步骤很接近。由于 Euclid 算法的复杂度为O(logN),故此方法也是。
时间复杂度:O(logN),空间复杂度:O(1)。
其实这道题和欧几里得的思想并没有太大关系···只是形式上一样···以后遇到数论题要多推一下式子···
代码:
#include <stdio.h>
#ifdef WIN32
#define OTL "%I64d"
#else
#define OTL "%lld"
#endif
#define ll long long
ll p, q, ans; void Deal( ll p, ll q ) {
if ( q == ) return;
ans += p / q;
Deal( q, p % q );
} int main() {
//freopen( "resistance.in", "r", stdin );
//freopen( "resistance.out", "w", stdout );
scanf( OTL OTL, &p, &q );
Deal( p, q );
printf( OTL, ans );
return ;
}
刷题总结——(一道很妙的题)Resistance(ssoj 欧几里得 )的更多相关文章
- [BZOJ2456] mode(一道很有意思的题)
传送门 看到这个题的第一反应是离散化+线段树乱搞.. eeeeeeeeeeee感觉数据结构学傻了,其实直接存下来,sort一遍,n/2的位置的就是答案 当然前提是空间够的话 1m的空间连数组都开不下 ...
- CODEVS上一道很有趣的题(2145 判断奇偶性)
判断函数y=x^n次方的奇偶性若是奇函数就输出ji,偶函数输出ou 233333 用到了long long 还是爆了,于是就上了char a[1000000] =.= #include<stdi ...
- 一道很经典的 BFS 题
一道很经典的 BFS 题 想认真的写篇题解. 题目来自:https://www.luogu.org/problemnew/show/P1126 题目描述 机器人移动学会(RMI)现在正尝试用机器人搬运 ...
- JS、JAVA刷题和C刷题的一个很重要的区别
就是最近在做树方面的题时,发现JS和JAVA刷题和C刷题的一个很重要的区别就是传入null的区别 当遍历的时候,C传参数时可以传进去null的指针,因为递归进去,出来时,指针还是指着那个地方 但是JS ...
- Python解答蓝桥杯省赛真题之从入门到真题(二刷题目一直更新)
蓝桥刷题 原文链接: https://github.com/libo-sober/LanQiaoCup Python解答蓝桥杯省赛真题之从入门到真题 不同字串 """ 一 ...
- 洛谷P2918 [USACO08NOV]买干草(一道完全背包模板题)
题目链接 很明显的一道完全背包板子题,做法也很简单,就是要注意 这里你可以买比所需多的干草,只要达到数量就行了 状态转移方程:dp[j]=min(dp[j],dp[j-m[i]]+c[i]) 代码如下 ...
- 牛客网刷题(纯java题型 1~30题)
牛客网刷题(纯java题型 1~30题) 应该是先extend,然后implement class test extends A implements B { public static void m ...
- [POI2010]KLO-Blocks——一道值得思考的题
题目大意: 给出N个正整数a[1..N],再给出一个正整数k,现在可以进行如下操作:每次选择一个大于k的正整数a[i],将a[i]减去1,选择a[i-1]或a[i+1]中的一个加上1.经过一定次数的操 ...
- 又一道区间DP的题 -- P3146 [USACO16OPEN]248
https://www.luogu.org/problemnew/show/P3146 一道区间dp的题,以区间长度为阶段; 但由于要处理相邻的问题,就变得有点麻烦; 最开始想了一个我知道有漏洞的方程 ...
随机推荐
- php的字符转换 & php登入注册界面设计以及源码 & 分离公共部分
我们在编写的时候总是会出现乱码 https://www.cnblogs.com/mafeng/p/5827215.html php登入注册界面设计以及源码 https://blog.csdn.net/ ...
- NOIP模拟赛 经营与开发 小奇挖矿
[题目描述] 4X概念体系,是指在PC战略游戏中一种相当普及和成熟的系统概念,得名自4个同样以“EX”为开头的英语单词. eXplore(探索) eXpand(拓张与发展) eXploit(经营与开发 ...
- 201621123080《java程序设计》第14周实验总结
201621123080<java程序设计>第14周实验总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结与数据库相关内容. 2. 使用数据库技术改造你的系统 2. ...
- JQ之$.ajax()方法以及ajax跨域请求
AJAX(Asynchronous javascript AND xml :异步javascript和xml):是一种创建交互式网页应用的网页开发技术.AJAX可以在不重新加载整个页面的情况下与服务器 ...
- 【Shiro】调用doGetAuthenticationInfo进行认证成功之后,isAuthenticated是false的问题。
使用@Configuration配置shiro无状态登录时出现的问题,在subject.login之后当前线程重新绑定了一个假定subject,isAuthenticated. 这里自定义的访问拦截器 ...
- ipvsadm分发MySQL读请求
在MySQL的部署场景中,经常使用HAproxy和ipvs来作为读请求转发的网关.ipvs的好处在于本身不需要daemon的方式来运行,而是直接作为kernel的服务来提供:当ipvs和应用程序服务器 ...
- cols
题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子.如果一条路径经过了矩阵中 ...
- VNC远程登录端使用经验之一
1.vnc/xmanager都是经常用的远程登录软件.vnc有个缺点就是他的进程不会自动退出比如如果开了PID1再去开PID2...PIDn.那么前面的PIDn-1个进程就会一直运行如果不手动kill ...
- 【android】【android studio】修改emulator的本地化环境
Changing the emulator locale from the adb shell To change the locale in the emulator by using the ad ...
- 微软与百度合作:win10搜索引擎默认百度
全球最大的中文搜索引擎百度公司与微软公司共同宣布双方展开战略合作.百度并将成为中国市场上Windows 10 Microsoft Edge浏览器的默认主页和搜索引擎.也就是说,将来人们在win10的M ...