簡單,二分法,可是在oj上交的時候會有精度的限制,所以僅僅能把數(shù)擴得大一點,并且在擴的時候為防止尾數(shù)會自己主動生成一些非零數(shù),所以還是自己吧擴到的位置設置為0,還有輸出時由于%.2lf會自己有4設5入,所以能夠自己算出小數(shù)點后兩位的數(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); } }
?
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
