void 民意调查比例法()
{//缘由https://bbs.csdn.net/topics/396521294?page=1#post-411408461从题目描述看:902/3~=300.7,1498/5~=299.6也就是大约求2个数的公约数,并使得这个公约数尽量求出最小误差?且商小于某值。
int a = 0, aa = 0, xz = 0;
cin >> a >> aa >> xz;
double gy = a > aa ? a * 1.0 / aa : aa * 1.0 / a, qz = 0, jj = xz;
aa = 1;
while (xz > 0)if (++aa < xz)((qz = xz*1.0 / aa) >= gy && (qz -= gy) <= jj ? jj = qz, a = xz * 10 + aa : 0); else --xz, aa = 1;
aa = a / 10; a %= 10;
while (!(aa % 2) && !(a % 2))a /= 2, aa /= 2;
cout << aa << ends << a;
}
把九九除法表当作数组使用查询最接近的值。