70分求助 #7/8 RE #9 WA
查看原帖
70分求助 #7/8 RE #9 WA
1046644
Dragonkiss楼主2023/7/31 23:54

70分求助 #7/8 RE #9 WA

#include<iostream>
using namespace std;
int main()
{
   int x0,y0;
   cin>>x0>>y0;
   int p[10000]={0},q[10000]={0};
   int num=0;
   int k=y0/x0;
   for(int i=1;i<=k;i++)
   {
       p[i]=i*x0;
       q[i]=i*x0;//创建两个3 6 9 ... 60的数组(x0的1 2 3...k倍)
   }
   for(int i=1;i<=k;i++)
   {
       for(int j=i;j<=k;j++)
       {
       if(y0%q[j]==0 && y0%p[i]==0)//判断数组内的数是否为y0的约数,排除如27 33等数
          {
           int z=y0/q[j];//60/15=4
           int x=y0/p[i];//60/12=5
           int u;
           for(int h=2;h<=x;h++)
           {
               if(z%h ==0 && x%h==0)
               {
                   break;
               }
               u=h;//判断y0是否为这两个数的最小公倍数
           }    


           if(u==x)//如果是最小公倍数
           {
           int e=q[j]/x0;//15/3=5
           int f=p[i]/x0;//12/3=4
           num+=2;
           //cout<<p[i]<<" "<<q[j]<<"+"<<endl;
           for(int h=2;h<=f;h++)
           {
               if(e%h ==0 && f%h==0)
               {
                   num-=2;
                   //cout<<p[i]<<" "<<q[j]<<"-"<<endl;
                   break;
               }
           }            //判断x0是否是两个数的最大公约数
           
           }
         }
       }
   }
   cout<<num;
}
2023/7/31 23:54
加载中...