2 条题解

  • 5
    @ 2022-2-22 17:35:44
    
    
    /*
    首先排序后去重,避免1的干扰 
    
    例如样例2 变成32 200 3125
    
    要找到这个比例,就是在200/32,3125/200去找
    
    首先利用gcd约分
    
    变成25/4 125/8
    
    设公比为q,q=q1/q2
    
    25/4肯定是q1^x1/q2^x2
    
    125/8肯定是q1^x2/q2^x2
    
    转化为这个问题从q1^1,q1^2,q1^3……q1^n,q1^m
    
    找到q1和从1*q1,2*q1找到q1不同
    
    q1^n和q1^m必然和q1^m,q1^n-m求出来的q1相同
    
    类似于辗转相除保证分子大于分母即可
    
    例如25和125
    
    125/25=5,转化为,25和5,25/5=5,转化为5和5
    
    此时分子分母相等所以q1=5
    */
    #include <bits/stdc++.h>
    using namespace std;
    long long n,a[105],k,minn,maxx;
    vector<long long> v1,v2;
    long long gcd(long long x,long long y)
    {
    	if(y==0) return x;
    	return gcd(y,x%y); 
    } 
    long long qgcd(long long x,long long y)//x分母,y分子
    {
    	if(x>y) swap(x,y);//分母大于分子交换一下
    	if(x==y) return x;
    	return qgcd(x,y/x);
    }
    int main()
    {
    	ios::sync_with_stdio(false);
    	cin.tie(0); 
    	cin>>n;
    	for(int i=1;i<=n;i++) cin>>a[i];
    	sort(a+1,a+n+1);
    	int N=unique(a+1,a+n+1)-(a+1);//去重函数,使用前必须排序,并不是删除数组的元素,只是把不重复的放到了前面。 
    	for(int i=1;i<=N-1;i++)
    	{
    		k=gcd(a[i],a[i+1]);
    		v2.push_back(a[i]/k);//v2保存约分后的分母 
    		v1.push_back(a[i+1]/k);//v1保存约分后的分子 
    	}
    	maxx=v1[0],minn=v2[0];
    	for(int i=1;i<v1.size();i++)
    	{
    		maxx=qgcd(maxx,v1[i]);
    		minn=qgcd(minn,v2[i]);
    	}
    	cout<<maxx<<"/"<<minn;
    	return 0;
    }
    • -6
      @ 2022-4-24 17:15:47

      写题解请注意

      鼓励大家写题解,但注意题解格式。

      题解一定要有思路解析或代码注释,能否让别人理解你的思路

      也是你的能力的检验,不要只放无意义的代码给大家复制,那就失去了做题的初心。

      给代码两端加上这个会舒服一些

      ```cpp

      你的代码

      ```

      </span>

      这个点在键盘的左上角tab上面那个键,注意切换输入法

      #include<iostream>
      using namespace std;
      int main()
      {
          int n;
          cin>>n;//这是一个注释
          return 0;
      } 
      

      请注意严禁抄袭题解,写题解不要只放代码,需加上你的思路或代码注释。

      抄袭题解一经发现直接取消成绩。

      题解被删除的可能

      1. 代码不符合格式规范
      2. 没有思路讲解或者没有注释,
      3. 无意义的题解

      大家携手共同维护一个良好的编程环境,如果一经发现,多次作乱。可能会被管理员拉黑,请注意,一旦拉黑即失去登陆资格。

      • 1

      信息

      ID
      169
      时间
      1000ms
      内存
      256MiB
      难度
      5
      标签
      递交数
      291
      已通过
      106
      上传者