3279529_ac_16ms_196k.cpp

来自「北大大牛代码 1240道题的原代码 超级权威」· C++ 代码 · 共 38 行

CPP
38
字号
#include <stdio.h>

int main()
{
	int n;
	double a0, an1, a1, aa, ab, min, max, mid, S, minh;

	scanf("%d%lf",&n,&a0);
	n -= 2;
	S = (n+1)*n/2;
	min = 0;max = 2100000000;
	while(min < max - 1e-4)
	{
		mid = (min+max)/2;
		an1 = mid;
		minh = a1 =(an1-2*S+n*a0)/(n+1);
		aa = a0;
		for(int i = 1; i < n; i++)
		{
			ab = 2.0*(1.0+a1)-aa;
			if(ab < minh)
			{
				minh = ab;
			}
			aa = a1;
			a1 = ab;
			if(minh < 0)
				break;
		}
		if(minh < 0)
			min = mid;
		else
			max = mid;
	}
	printf("%.2lf\n",min);
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?