纪中17日T2 2322. capacitor
2322. capacitor
(File IO): input:capacitor.in output:capacitor.out
题目描述

输入

输出

样例输入


样例输出


数据范围限制

Solution
注意这句话

温暖了这道题目~
首先我要解释一下并联和串联的意义:
将$\frac ab$与1串联
$\mathsf{\frac {1}{\frac ba + \frac 11}}$
$=\frac{1}{\frac{a+b}{a}}$
$=\frac{a}{a+b}$
将$\frac ab$与1并联
$ \frac ab + 1$
$=\frac {a+b} {a} $
所以,经过一次操作后,实际上只是把分子加上了分母或者是把分母加上了分子!
接下来
对于任何一个分数$\frac ab$,首先将其化成最简分数(约分),再提取整数部分,最后再代回$\frac ab$
倒过来推导之前的过程:将a,b中大的数减去小的数,直到两者皆为1
于是,我竟然有4个点时间超限了!
(下了个数据)
…………
某个数据的一部分
好厉(wei)害(suo)!
再优化
我优化了两个地方:
求gcd使用二进制法以及卡常(可无视)
以及
减少相减循环的次数
当a,b反复相减时,总有一个数会先变成1(假设是a),然后b又要执行b次运算,每次仅仅是把b-=1,ans++……这个地方一定可以优化!
直接在a,b有一者减成1时跳出循环(假设是a)
本来还有b次循环,那么这时的答案就会比正确答案少b
所以,最后再把ans+=a*b即可
(上面的式子对a=1或b=1都适用)
Code
#include<iostream>
#include<cstdio>
using namespace std;
long long a,b,ans,t,g,n;
long long gcd(long long a,long long b)
{
if(!b) return a;
if(!(a|)&&!(b|)) return *gcd(a>>,b>>);
if((!(a|))&&(b|)) return gcd(a,b>>);
if(!(a|)&&!(b|)) return gcd(a>>,b);
return gcd(b,a%b);
}
int main()
{
// freopen("capacitor.in","r",stdin);
// freopen("capacitor.out","w",stdout);
cin>>t;
while(t--)
{
scanf("%lld%lld",&a,&b);
ans=;
g=gcd(a,b);
a/=g;b/=g;
n=a/b;
if(a>b) swap(a,b);
while(a!=&&b!=)
{
ans++;
b-=a;
if(a>b) swap(a,b);//a<b
}
cout<<ans+a*b<<endl;
}
return ;
}
End
这道题我会,还是WA了!!!
今天又是爆0的一天啊……
纪中17日T2 2322. capacitor的更多相关文章
- 纪中17日T1 2321. 方程
纪中17日T1 2321. 方程 (File IO): input:cti.in output:cti.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto ...
- 纪中5日T2 1565. 神秘山庄
1565. 神秘山庄 (Standard IO) 原题 题目描述 翠亨村是一个神秘的山庄,并不是因为它孕育了伟人孙中山,更神秘的是山庄里有N只鬼.M只兔子,当然还有你.其中每秒钟: 1. 恰有两个生物 ...
- 纪中21日T3 2118. 【2016-12-30普及组模拟】最大公约数
纪中21日T3 2118. 最大公约数 (File IO): input:gcd.in output:gcd.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto ...
- 纪中10日T1 2313. 动态仙人掌
纪中10日 2313. 动态仙人掌 (File IO): input:dinosaur.in output:dinosaur.out 时间限制: 1500 ms 空间限制: 524288 KB 具 ...
- 纪中23日c组T2 2159. 【2017.7.11普及】max 洛谷P1249 最大乘积
纪中2159. max 洛谷P1249 最大乘积 说明:这两题基本完全相同,故放在一起写题解 纪中2159. max (File IO): input:max.in output:max.out 时间 ...
- 纪中23日c组T3 2161. 【2017.7.11普及】围攻 斐波那契数列
2161. 围攻 (File IO): input:siege.in output:siege.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto Prob ...
- 洛谷P1880 [NOI1995]石子合并 纪中21日c组T4 2119. 【2016-12-30普及组模拟】环状石子归并
洛谷P1880 石子合并 纪中2119. 环状石子归并 洛谷传送门 题目描述1 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石 ...
- 纪中21日c组T2 2117. 【2016-12-30普及组模拟】台风
2117. 台风 (File IO): input:storm.in output:storm.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto Proble ...
- 纪中20日c组T2 2122. 【2016-12-31普及组模拟】幸运票
2122. 幸运票 (File IO): input:tickets.in output:tickets.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto P ...
随机推荐
- 暑假第二周总结(在centos系统中安装eclipse出错,改为安装ubantu)
本周试着在centos6.4系统上安装eclipse,在林子雨老师的教程所给的链接无法下载,后来找了许多的教程,即便是从官网下载之后,即便是安装好之后eclipse都无法正常启动,后来翻阅借阅的图书后 ...
- python3中的继承和多态
*继承 当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Base class.Super clas ...
- C# 多态和接口
1多态可以有属性,接口只有方法 2关键字不同,多态有静态多态(abstract)和动态多态(virtual),静态多态不能new()出自己,动态多态可以;多态中可以有自己的方法可设置不需要子类重写,接 ...
- Codeforces_831
A.线性判断. #include<bits/stdc++.h> using namespace std; ] = {}; int main() { ios::sync_with_stdio ...
- java Map排序问题
java 中,Map常见的有HashMap ,TreeMap等等,Map是一个接口,我们不能直接声明一个Map类型的对象,在实际开发 中,比较常用的Map性数据结构是HashMap和TreeMap,它 ...
- POJ_1222_高斯消元
题目描述: 每组数据给出一个5*6的0 1矩阵,每次操作可以把某个位置及其四周的位置0 1置换,要求输出操作位置的矩阵. 思路: 每个位置操作2次则等于没有操作,所以每个位置有操作和不操作两种选择,爆 ...
- python之sorted用法
operator.itemgetter函数 operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),下面看例子. a = [1, ...
- Java并发之Exchanger类
应用场景 如果两个线程在运行过程中需要交换彼此的信息,可以使用Exchanger这个类. Exchanger为线程交换信息提供了非常方便的途径,它可以作为两个线程交换对象的同步点,只有当每个线程都在进 ...
- CSS选择器世界
CSS选择器世界 CSS选择器的分类与优先级 css选择器分为四类:选择器.选择符(后代关系的空格.>.+.~.||).伪类.伪元素(::before.::after.::first-lette ...
- [Redis-CentOS7]Redis列表操作(三)
LPUSH添加列表 127.0.0.1:6379> LPUSH websites www.baidu.com (integer) 1 LRANGE 获取全部值 127.0.0.1:6379> ...