社区讨论
0tps求条 玄关 在线等 急急急!!!
P1072[NOIP 2009 提高组] Hankson 的趣味题参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mjsdfi6z
- 此快照首次捕获于
- 2025/12/30 17:14 2 个月前
- 此快照最后确认于
- 2026/01/02 14:40 2 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
int n;
int prime[60010];
int tot;
int num;
int bj[60010];
map<int,int>mp;
int a,b,c,d;
int lcm(int xx,int yy){
return xx*yy/__gcd(xx,yy);
}
void f(){
prime[++tot]=1;
for(int i=2;i<=45000;i++){
if(bj[i]==0){
prime[++tot]=i;
for(int j=i*i;j<=45000;j+=i) bj[j]=1;
}
}
}
void dfs(int pos,int x,int cs){
if(x>d) return ;
if(pos>45000) return ;
if(d%x==0&&mp[x]==0){
mp[x]=1;
cout<<x<<endl;
if(__gcd(a,x)==b&&lcm(c,x)==d&&mp[x]==0){
mp[x]=1;
num++;
return ;
}
}
int tx=x;
for(int i=0;i<cs;i++){
if(i==0){
dfs(pos+1,tx,i);
}
if(tx>d/prime[pos])return ;
tx*=prime[pos];
dfs(pos+1,tx,i);
}
}
int main(){
cin>>n;
f();
while(n--){
num=0;
cin>>a>>b>>c>>d;
dfs(1,1,int(log2(d)));
cout<<num<<"\n";
}
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...