ningago @ 2022-07-10 13:09:19
Code:
for(int i = 1;i <= T;i++)
{
while(1)
{
mul(A,B,prime[now]);
if(A <= qr[i])
{
B = A;
now++;
}
else
break;
}
ans[qr[i].id] = B;
}
mul是高精乘,答案存进A
感觉结构体赋值常数太大了,求助大佬怎么调整
by Querainy @ 2022-07-10 13:23:57
你的mul是啥啊
by ningago @ 2022-07-10 13:25:11
@华山抡剑
谔谔
mul是高精乘,答案存进A
by ningago @ 2022-07-10 13:25:34
感觉高精的代码不用贴了吧……
by dehsirehC @ 2022-07-10 13:29:24
瓶颈难道不应该是高精吗?
by ningago @ 2022-07-10 13:30:53
@liqingyang 然而prime是个int,高精是
by ningago @ 2022-07-10 13:31:30
(发这个贴的缘故是不会压位高精
by 2020kanade @ 2022-07-10 13:35:11
要不FFT高精试试
by rxjdasiwzl @ 2022-07-10 14:05:04
@ningago 压位和不压位只有进制的区别,其他完全一致
by baiABC @ 2022-07-10 14:43:55
A 和 B 可以存指针避免结构体复制吧
by baiABC @ 2022-07-10 14:52:09
decltype(A) *P1 = &A, *P2 = &B;
for(int i = 1; i <= T; i++)
{
while(1)
{
mul(P1,P2,prime[now]);
// 传参用指针或引用
if(*P1 <= qr[i])
{
swap(P1, P2);
now++;
}
else break;
}
ans[qr[i].id] = *P2;
}