用快速幂。
pair<ldb, ll> fpow(ldb a, int k) {
ll A = 0, R = 0;
while (a >= 10) {
a /= 10;
A++;
}
ldb r = 1.0;
while (k) {
if (k&1) {
r = r * a;
R += A;
while (r >= 10) {
r /= 10;
R++;
}
}
k >>= 1;
a = a * a;
A *= 2;
while (a >= 10) {
a /= 10;
A++;
}
}
return {r, R};
}
注意这里一定要用 long double a
,不要偷懒用两个变量只记录整数和小数后一位。
总有一个最优解,直线经过至少两条线段的端点。
于是枚举是哪两条线段的端点,然后枚举所有线段,判断直线是否经过。
标签:10,2024.2,联赛,ldb,++,线段,while From: https://www.cnblogs.com/FLY-lai/p/18052424