Codeforces Round #433 (Div. 2)A&B

来源:互联网 发布:在虚拟机安装mac系统 编辑:程序博客网 时间:2024/06/13 22:13

http://codeforces.com/contest/854
A
给定一个数字m,问能否得到数字 a,b
满足条件 a+b==m并且a

#include <bits/stdc++.h>using namespace std;int m;int gcd(int a,int b){    if(b==0) return a;    return gcd(b,a%b);}int main(){    while(~scanf("%d",&m)){           double ans=-1;           int x,y;           for(int i=1;i<=m;i++){              for(int j=1;j<=m;j++){                  if(i+j==m&&gcd(i,j)==1&&i<j)                  {   double t=(1.0*i)/(1.0*j);                      if(ans<t){                         ans=t;                         x=i;                         y=j;                      }                  }              }           }           printf("%d %d\n",x,y);     }    return 0;}

B
给定一排房子编号1-m
有k个房子已经有人住了。
问这k个房子如何排列,能够让好房子最多。
好房子条件:本身不能被人住。周围至少有一个已经有人住。
思路:悲剧死了。没有判断n为0的情况。。wa到死。。
最好的情况是 max(m-n,2*n).

#include <bits/stdc++.h>using namespace std;typedef long long ll;ll m,n;int main(){     while(~scanf("%lld%lld",&m,&n)){           if(m==n||n==0)           { printf("0 0\n");           }           else{               ll s=n*2;               ll t=min(s,m-n);               printf("1 %lld\n",t);           }      }    return 0;}
原创粉丝点击