听取MLE声一片 @ 2025-09-17 11:06:38
给定
by arrow_king @ 2025-09-17 11:07:11
大学一年级新生是吧
by Kaf_yoU @ 2025-09-17 11:07:19
请广大谷民在魔怔的时候记得藏钩
by mysterys @ 2025-09-17 11:07:57
大帝也来了
by 缪凌锴_Mathew @ 2025-09-17 11:07:57
太煎蛋了,只需要枚举ab从1道n不久对啦
by meyi @ 2025-09-17 11:07:58
感觉帖主智力有问题
by xhabc66 @ 2025-09-17 11:07:59
@DDD_et没有实人验证(悲
by 听取MLE声一片 @ 2025-09-17 11:09:42
@meyi 大佬你会做这道题吗。
by lgvc @ 2025-09-17 11:18:35
是不是什么,取个 p 是一堆小素数的乘积 ,枚举 b^3%p 再暴力来者
by 听取MLE声一片 @ 2025-09-17 11:21:55
@lgvc 细说
by lgvc @ 2025-09-17 11:32:27
@听取MLE声一片
#include <bits/stdc++.h>
#define MOD 60060
#define LL long long
std::vector<int> tq[MOD+10];
int T,ss[MOD+10],ok[MOD+10],qq;
signed main(void) {
scanf("%d",&T);
for(int i=1;i<=1000000;i++) {
tq[1ll*i*i*i%MOD].push_back(i);
}
for(int i=0;i<MOD;i++) {
ok[1ll*i*i%MOD]=1;
}
for(int i=0;i<MOD;i++) {
if(ok[i]) {
ss[++qq]=i;
}
}
while(T--) {
LL N;scanf("%lld",&N);
// LL xx=rng()%500000000+1;
// LL yy=rng()%500000+1;
// N=1ll*xx*xx+1ll*yy*yy*yy;
int ans=0;
for(int i=1;i<=qq;i++) {
LL xx=(N-ss[i]+MOD)%MOD;
for(int j=0;j<tq[xx].size();j++) {
LL v=N-1ll*tq[xx][j]*tq[xx][j]*tq[xx][j];
if(v<=0) break;
int x=sqrtl(v);
if(1ll*x*x==v) {
ans++;
}
}
}
printf("%d\n",ans);
}
}
写了一份,应该很好懂