Codeforces 200 div.2
来源:互联网 发布:熟练掌握java语言 编辑:程序博客网 时间:2024/05/14 08:51
C.Rational Resistance
题意:给出一个分数,分子为a,分母为b,求组成该电阻的最小个数。电阻有串联并联两种方式,初始电阻均为1.
思路:因为串联越多,电阻增大;并联越多,电阻减小。
// [a/b]表示int(a/b),a/b表示为分数b分之a;
例如a=21,b=8;那么其一定是由[21/8]个电阻再加上21/8-2=5/8,即使8/5的倒数,那么8/5又是由[8/5]加上3/5。
同理5/3=[5/3]+2/3;3/2=[3/2]+1/2;2/1=2;
所以21/8=[21/8]+[8/5]+[5/3]+[3/2]+[2/1]=2+1+1+1+2=7;
注意数据的范围。
#include<iostream>#include<string.h>#include<algorithm>using namespace std;typedef long long ll;int main(){ ll a,b,ans; ans=0; cin>>a>>b; if(a<b)swap(a,b); while(a&&b) { if(a<b)swap(a,b); ans+=a/b; a-=a/b*b; } cout<<ans<<endl;}
D.Alternating Current
题意:两根“+”,“-”的电线,给你一个只含有“+”“-”的字符串,“+”表示+的电线压在-的上面,反之。
问给出的电线交叉方式能否互不缠绕,能输出Yes,不能输出No。
思路:两个相邻且相同的字符可以把两根线分开。例如-++-,不断的理清相邻且相同的字符,-++- -> --。所以可以利用栈先进后出的特点,遍历字符串,与栈头不同则加入栈,反之则pop。
#include<bits/stdc++.h>using namespace std;char str[100005];int main(){ while(~scanf("%s",str)){ stack<char>q; int n=strlen(str); for(int i=0;i<n;i++){ if(q.empty()||str[i]!=q.top())q.push(str[i]); else{ q.pop(); } } if(q.empty())printf("Yes\n"); else printf("No\n"); }}
0 0
- Codeforces 200 div.2
- Codeforces Round #200 (Div. 2)
- Codeforces Round #200 (Div. 2)
- Codeforces Round #200 (Div. 2)
- Codeforces Round #200 (Div. 2)A. Magnets
- CodeForces #200(Div.2) A. Magnets
- Codeforces #200(div.2) 模拟练习赛
- Codeforces Round #200 (Div. 2) (ABCDE题解)
- codeforces round 200Div
- codeForces #140 div 2
- codeforces #149 div 2
- Codeforces #154 div 2
- Codeforces 156 div.2
- codeforces 167 div 2
- codeforces #176 div.2
- Codeforces 193 Div 2
- Codeforces #223 Div.2
- codeforces #313(div 2)
- 有趣的超短Python代码
- iOS简单的密码输入组件XLPasswordView,UI类似支付宝
- Hibernate
- TCL多媒体李璐:革命性技术创新是企业改变历史的首要方向
- crontab定时执行程序
- Codeforces 200 div.2
- BZOJ 2157 旅游【裸链剖+线段树
- vb.net log4net
- Java Socket之URL(一)
- C++内存分布之虚函数和虚表
- 开源流媒体云视频平台EasyDarwin中EasyCMS服务是如何进行命令转发和消息路由的
- 华为OJ 初级:自首数
- SIM卡运营商信息整理
- TabLayout和ViewPager以及Fragment实现超级简单导航栏