1.21 SNDU


 

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

题意:

思路:

猜你喜欢

转载自www.cnblogs.com/yishuda/p/12228830.html