码迷,mamicode.com
首页 > 其他好文 > 详细

又是毕业季I

时间:2017-08-23 10:45:38      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:while   UI   main   直接   ==   namespace   amp   strong   bsp   

洛谷P1372 又是毕业季I

对于答案a,k*a是最接近n的,即a=n/k(下取整),所以直接输n/k即可。

我的方法是

二分查找

n/k真的没有想到唉。

我找的最大公约数,如果当前的mid对应的个数比k大,就往大了找,否则往小里找,对于边界问题,要加一些特判。

#include<bits/stdc++.h>
using namespace std;
int n,k;
bool p(int x)
{
    int i;
    for(i=0;i<=n&&i*x<=n;i++){
    }
    if(i-1>=k)
    return true;
    return false;
}
int main()
{
  cin>>n>>k;
  if(n==k)
  {
      cout<<1;
      return 0;
  }
  int l=1,r=n,mid;
  while(l<r)
  {
    mid=(l+r)>>1;
    if(p(mid))
    l=mid+1;
    else
    r=mid;    
  }
  if(k==1)
  cout<<n;
  else
  cout<<max(l-1,1);
  return 0;
}

 

又是毕业季I

标签:while   UI   main   直接   ==   namespace   amp   strong   bsp   

原文地址:http://www.cnblogs.com/war1111/p/7416326.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!