求时间复杂度分析
查看原帖
求时间复杂度分析
983702
lrj3247楼主2024/8/28 14:38

TLE了两个点,一个1.01,一个1.04,难绷。

#include <bits/stdc++.h>
using namespace std;
long double p;
int x,y,ans[15];
int main(){
	cin>>p;
	x = (int) p;
	if((long double)x ==p ){
		++ans[x];
		for(int i = 1 ; i<=5 ; i++) cout<<ans[i]<<" ";
		return 0;
	}
	else{
		int y=x+1;
		long double k0=(long double)x,k1=k0+1,now=(k0+k1)/2;
		int sum1=1,sum2=1;
		while(now!=p){
			if(now<p) ++sum2;
			else ++sum1;
			now=(k0*sum1+k1*sum2)/(sum1+sum2);
		}
		ans[x]+=sum1,ans[y]+=sum2;
		for(int i = 1 ; i<=5 ; i++) cout<<ans[i]<<" ";
	}
	return 0;
}
2024/8/28 14:38
加载中...