记录编号 |
309414 |
评测结果 |
AAAAAAAAAA |
题目名称 |
除法表达式 |
最终得分 |
100 |
用户昵称 |
kito |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
1.207 s |
提交时间 |
2016-09-19 17:15:20 |
内存使用 |
0.22 MiB |
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
#include<cmath>
using namespace std;
#define fcl fclose(stdin); fclose(stdout); return 0
int A,B,tot=0,x=0;
int Prime[50]={0},cnt=0,sum[50]={0};
void Init(){
tot=0; cnt=0;
memset(Prime,0,sizeof(Prime));
memset(sum,0,sizeof(sum));
A=0; B=0;
}
void Div(){
int p=(int)sqrt((double)B);
for(int i=2;i<=p;++i){
if(B%i==0){
Prime[++cnt]=i;
while(B%i==0){
B/=i;
sum[cnt]++;
}
}
if(B==1) break;
}
if(B!=1){
Prime[++cnt]=B;
sum[cnt]=1;
}
}
bool GetDiv(int a){
bool Luka=false,Tina=true;
for(int i=1;i<=cnt;++i){
if(sum[i]==0) continue;
else{
Luka=true;
while(a%Prime[i]==0){
a/=Prime[i];
sum[i]--;
if(sum[i]==0){
Luka=false;
break;
}
}
if(Luka) Tina=false;
}
}
return Tina;
}
int main(){
freopen("baoquansl.in","r",stdin);
freopen("baoquansl.out","w",stdout);
string c;
int L,id=0;
while(1){
x=0;
//id++;
getline(cin,c);
L=c.size();
if(L==0) break;
for(int i=0;i<L;++i){
if(c[i]>='0'&&c[i]<='9'){
x=x*10+c[i]-'0';
}
else if(c[i]=='/'){
tot++;
if(tot==1) A=x;
else if(tot==2){
B=x;
Div();
}
else{
if(GetDiv(x)){
printf("YES\n");
Init();
break;
}
}
x=0;
}
if(i==L-1){
tot++;
if(tot==1) printf("YES\n");
else if(tot==2){
B=x;
Div();
if(GetDiv(A)) printf("YES\n");
else printf("NO\n");
}
else{
if(GetDiv(x)) printf("YES\n");
else{
if(GetDiv(A)) printf("YES\n");
else printf("NO\n");
}
}
x=0;
Init();
}
}
}/*
tot++;
if(tot==1) printf("YES\n");
else if(tot==2){
B=x;
Div();
if(GetDiv(A)) printf("YES\n");
else printf("NO\n");
}
else{
if(GetDiv(x)) printf("YES\n");
else{
if(GetDiv(A)) printf("YES\n");
else printf("NO\n");
}
}
x=0;*/
fcl;
}