社区讨论
90……,第二个点wa,对拍了好久都没错,求神犇纠错
P1072[NOIP 2009 提高组] Hankson 的趣味题参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mi6gfvlr
- 此快照首次捕获于
- 2025/11/20 04:28 4 个月前
- 此快照最后确认于
- 2025/11/20 04:28 4 个月前
CPP
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
using namespace std;
#define fo(a,b,c) for(int a=b;a<=c;a++)
#define go(a,b,c) for(int a=b;a>=c;a--)
int read(){
int a=0,f=0;char c=getchar();
for(;c<'0'||c>'9';c=getchar())if(c=='-')f=1;
for(;c>='0'&&c<='9';c=getchar())a=a*10+c-'0';
return f?-a:a;
}
int min(int a,int b){return a<b?a:b;}
int max(int a,int b){return a>b?a:b;}
int np=0,p[4649],b[45000],a[2][2];
int main(){
// freopen("in.txt","r",stdin);
int pp=floor(sqrt(2000000000));
fo(i,2,pp)if(!b[i]){p[++np]=i;fo(j,2,pp/i)b[i*j]=1;}//素数表
for(int n=read(),x=1;n;n--,x=1){
fo(i,0,1)fo(j,0,1)a[i][j]=read();
fo(k,1,np){
int f[2][2]={0};
fo(i,0,1)fo(j,0,1)while(!(a[i][j]%p[k]))
a[i][j]/=p[k],f[i][j]++;//指数
if(f[0][1]>f[1][1])x=0;
if(f[0][0]!=f[0][1]&&f[0][1]!=f[1][1]&&f[1][0]!=f[1][1])x=0;
if(f[0][0]==f[0][1]&&f[1][0]==f[1][1])x*=(f[1][0]-f[0][1]+1);
}
if(a[0][1]!=a[1][0])x=0;
if(a[0][0]!=a[0][1]&&a[0][1]!=a[1][0]&&a[1][0]!=a[1][1])x=0;
if(a[0][0]==a[0][1]&&a[1][0]==a[1][1]&&a[1][0]-1)x<<=1;//余大质数
printf("%d\n",x);
}
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...