记录编号 276186 评测结果 AAAAAAAAAA
题目名称 [NOIP 2009]Hankson的趣味题 最终得分 100
用户昵称 GravatarGo灬Fire 是否通过 通过
代码语言 C++ 运行时间 0.064 s
提交时间 2016-07-03 17:10:09 内存使用 0.35 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=1010;
struct Node{
	int data,num;
	int p[maxn],w[maxn];
}a0,a1,b0,b1;
int ans=1,p=0,l[maxn],r[maxn];
void Init();
void Judge();
int main(){
	freopen("son.in","r",stdin);
	freopen("son.out","w",stdout);
	int t;scanf("%d",&t);
	while(t--){
		memset(l,0,sizeof(l));
		memset(r,0,sizeof(r));
		p=0;ans=1;
		scanf("%d%d%d%d",&a0.data,&a1.data,&b0.data,&b1.data);
		Init();
		Judge();
		for(int i=1;i<=b1.num;i++) ans*=(r[i]-l[i]+1);
		if(p) ans=0;
		printf("%d\n",ans);
	}
	
	return 0;
}
void Init(){
	int x=2;
	b1.num=0;
	while(b1.data>=x*x){//分解b1质因数 
		int cnt=0;
		while(b1.data%x==0){ cnt++; b1.data/=x; }
		if(cnt){ b1.p[++b1.num]=x; b1.w[b1.num]=cnt; }
		x++;
	}
	if(b1.data!=1){ b1.p[++b1.num]=b1.data; b1.w[b1.num]=1; }
	a0.num=0;
	for(int i=1;i<=b1.num;i++){//分解a0 
		int x=b1.p[i],cnt=0;
		while(a0.data%x==0){ cnt++; a0.data/=x; }
		a0.p[++a0.num]=x; a0.w[a0.num]=cnt;
	}
	a1.num=0;
	for(int i=1;i<=b1.num;i++){//分解a1 
		int x=b1.p[i],cnt=0;
		while(a1.data%x==0){ cnt++; a1.data/=x; }
		a1.p[++a1.num]=x; a1.w[a1.num]=cnt;
	}
	
	b0.num=0;
	for(int i=1;i<=b1.num;i++){//分解b0 
		int x=b1.p[i],cnt=0;
		while(b0.data%x==0){ cnt++; b0.data/=x; }
		b0.p[++b0.num]=x; b0.w[b0.num]=cnt;
	}
}
void Judge(){
	for(int i=1;i<=b1.num;i++){
		if(a1.w[i]>b1.w[i]){ p=1; break;}
		if(a1.w[i]<a0.w[i]&&b1.w[i]>b0.w[i]&&b1.w[i]>a1.w[i]){ p=1;break; }
		if(a1.w[i]<a0.w[i]){ l[i]=r[i]=a1.w[i]; continue; }
		if(b1.w[i]>b0.w[i]){ l[i]=r[i]=b1.w[i]; continue; }
		l[i]=a1.w[i]; r[i]=b1.w[i];
	}
}