0
点赞
收藏
分享

微信扫一扫

CF1665A

河南妞 2022-04-13 阅读 66

题意是给一个数让分解成4个数的和,并且前两个数gcd=后两个数lcm,输出一组符合要求的数

A. GCD vs LCM

暴力,给的测试数据能过,但是提交上超时,输入1000000000也是要算很久。

感觉这个题要用dfs或者dp才能做出来

#include<bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) {
    if (b == 0) {
        return a;
    }

    return gcd(b, a % b);
}
long long lcm(long long a, long long b) {
    return a * b / gcd(a, b);
}
long long T;
long long n;
int main()
{
    scanf("%lld",&T);
    while(T--)
    {
        scanf("%lld",&n);
        for(long long i = 1;i<=n;i++)
        {
            for(long long j = 1;j<=n-i;j++)
                for(long long k = 1;k <= n-i-j;k++)
                    for(long long l = 1;l<= n-i-j-k;l++)
            {

                {
                    if(gcd(i,j)==lcm(k,l)&&i+j+k+l == n)
                    {

                        cout<<i<<" "<<j<<" "<<k<<" "<<l;
                        break;
                    }
                    break;

                }
            break;
            }
            break;
        }
       printf("\n");
    }
    return 0;
}
    
举报

相关推荐

0 条评论