CF1665A

题意

给定一个正整数 $ n $ ,求一组正整数 $ a $ , $ b $ , $ c $ , $ d $ ,使得 $ a + b + c + d = n $ ,并且 $ \gcd ( a , b ) = \ \operatorname{lcm} ( c , d ) $ 。

题目思路

读完题目之后可以清楚的明白,这一题大概率是一道数学题,单纯写个暴力肯定是过不了数据的。

但是,在略加观察后我们可以发现,题目的每次输入都只有一个数,而且这一题还是 Special Judge 。这就意味着对于每个数大概率是有通法的。这个时候就可以打表来找规律了。

略微打表后,我们对比每一个 $ n $ ,可以清楚地看出对于存在答案的每个 $n$ 当 $ a = 1 \ \ b = n-3 \ \ c = 1 \ \ d = 1 \ \ $ 时,结果是显然成立的。

那么按照惯例,这里只放一下打表的代码:

#include <iostream>
#include <stdio.h>
#include <algorithm>

using namespace std;
int n,a,b,c,d;
int gcd(int a,int b){
    if(a<b)swap(a,b);
    return b?gcd(b,a%b):a;
}
int lcm(int a,int b){
    if(a<b) swap(a,b);
    return a*b/gcd(a,b);
}
int main(){
    scanf("%d",&n);
    for(int q=1;q<=n;q++){
        printf("%d\n",q);
        for(int i=1;i<=q;i++){
            for(int j=1;j<=q;j++){
                for(int k=1;k<=q;k++){
                    for(int l=1;l<=q;l++){
                        if(i+j+k+l>q) break;
                        else{
                            if(i+j+k+l==q){
                                if(gcd(i,j)==lcm(k,l)) printf("%d %d %d %d\n",i,j,k,l);
                            }
                        }
                    }
                }
            }
        }
    }
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇