簡(jiǎn)單,二分法,可是在oj上交的時(shí)候會(huì)有精度的限制,所以僅僅能把數(shù)擴(kuò)得大一點(diǎn),并且在擴(kuò)的時(shí)候?yàn)榉乐刮矓?shù)會(huì)自己主動(dòng)生成一些非零數(shù),所以還是自己吧擴(kuò)到的位置設(shè)置為0,還有輸出時(shí)由于%.2lf會(huì)自己有4設(shè)5入,所以能夠自己算出小數(shù)點(diǎn)后兩位的數(shù)值,在輸出,保證要求的精度
#include <iostream>
#include <stdio.h>
#include <algorithm>
#define MAX 10010
using namespace std;
long long input[MAX];
int m,n;
bool cmp(int a,int b)
{
return a<b;
}
bool judge(int mid)
{
int x = 0;
for(int i = 0;i < n;i++){
x += input[i] / mid;
}
if(x >= m)
return true;
else
return false;
}
int main()
{
//#ifndef ONLINE_JUDGE
// freopen("in.txt","r",stdin);
//#endif
long long high,low,mid,res;
double a;
while(cin>>n>>m){
high = 0;
low = 0;
for(int i = 0;i < n;i++){
cin>>a;
input[i] = (a+1e-8)*10000;
high = high > input[i]?high : input[i];
}
sort(input,input+n,cmp);
res = 0;
low = 10000/100;
while(low <= high){
mid = (low+high)/2;
if(judge(mid)){
res = mid;
low = mid+1;
}
else
high = mid-1;
}
int th = res/10000;
int hu = (res - th * 10000)/1000;
int te = (res - th * 10000 - hu * 1000)/100;
printf("%d.%d%d\n",th,hu,te);
}
}
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

