按照题意模拟即可。
但是有可能被卡精度,我赛时就被卡了。
这里建议在取 时将括号中的 拆出来,然后先和 相乘,就不会被卡了。
代码如下:
#include <bits/stdc++.h>
using namespace std;
#define int long long//注意!!!
signed main () {
int T, n;
double m;
scanf ("%lld", &T);
long long res = 0ll;
while (T --) {
scanf ("%lld%lf", &n, &m);
res = 0ll;
while (n > 0) {
int red = n * 100;
int green = min (10000ll, ((long long)(m * 100) * n - n * 100));
//取min时更改写法。
n = 0;
res += green / 10;
res += red / 10;
n += red / 200;
//模拟。
}
printf ("%lld\n", res);
}
}