⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pku1650.cpp

📁 这是ACM 方面的资料 是PKU的 北京大学的出来的
💻 CPP
字号:
#include <stdio.h>
#include <math.h>

int main()
{
	double A, min, tmp, mindis;
	int L, i, j, min1, min2, tI;

//	freopen("in.dat", "r", stdin);

	while (scanf("%lf %d", &A, &L) != -1)
	{
		if (fabs(A - 0.0) < 1e-8)
		{
			printf("0 1\n");
			continue;
		}

		if (A > L)
		{
			printf("%d 1\n", L);
			continue;
		}
		
		min = 1;
		if (A > 1)
		{
			min1 = (int)(A + 0.5);
			min2 = 1;
			min = fabs(min1 - A);
			for (i = 1; A * i < (double)L; i++)
			{
				tmp = fabs((int)(i * A + 0.5) / (double)i - A);
				if (tmp < min)
				{
					min1 = (int)(i * A + 0.5);
					min2 = i;
					min = tmp;
				}
			}
			printf("%d %d\n", min1, min2);
		}
		else
		{
			min1 = (int) (1.0 / A);
			
			if (1.0 / min1 - A > A - 1.0 / (min1 + 1))
			{
				min1 += 1;
			}
			min2 = 1;
			mindis = fabs(1.0 / min1 - A);

			for (i = 1; i < A * L; i++)
			{
				tI = (int)(i * 1.0 / A);
				tmp = fabs(i * 1.0 / tI - A);
//				printf("Ti = %d, tmp = %.2lf mindis = %.2lf\n", tI, tmp, mindis);
				if (tmp < mindis)
				{
					min2 = i;
					min1 = tI;
					mindis = fabs(i * 1.0 / tI - A);
				}
				tI += 1;
				if (fabs(i * 1.0 / tI  - A) < mindis)
				{
					min2 = i;
					min1 = tI;
					mindis = fabs(i * 1.0 / tI - A);
				}

			}
			printf("%d %d\n", min2, min1);
		}
	}
	
	return 0;
}

⌨️ 快捷键说明

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