A - A
题意:
给你一个数n,存在一个分数(小于1,其分母,分子之和为n,不可以约分),让你找出这个最大分数。输入其分子,分母。
思路:
让n的一半为分子,其余为分母,进行一次查找,如果分子分母的最大公因数为1,即为答案,输出即可。
AC代码:
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int gcd(int a,int b){ return b==0?a:gcd(b,a%b); } int main(){ int n; cin>>n; int l=n/2; int r=n-l; while (1) { if (gcd(l, r)==1) { cout<<l<<' '<<r<<endl; break; } l--;r++; } }
B - B
题意:
大概意思就是有n个相邻的房子,已知有k个房子已经有人居住(k<=n)。
规定可以出租的房子条件:1、无人居住;2、相邻着有人居住的房子(方便串门儿)
让你输出可以出租的房子的最小可能和最大可能。
思路:
先特殊判断一下k。如果当前用户住满了或者一个居住的用户都没有,我们就可以直接输出答案。
然后我们分析一下可知,一个住户可以让两个空房子出租(最佳),所以让n个房子达到饱和状态最少需要的住户是n/3 个
接下来我们只需要判断k的值就可以了。
AC代码:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int main(){ long long n,k; cin>>n>>k; if (n==k||k==0) cout<<"0 0"<<endl; else{ if(3*k<=n) cout<<"1 "<<2*k<<endl; else cout<<"1 "<<n-k<<endl; } }
C - C
题意:
思路: