题解归档 - cf2234A

题解归档 - cf2234A

本文由 cf-code 本地题解库自动归档;公开内容以本地 AC/验证版本为准。

思路

cf2234A 思路(用户)

策略

  1. 枚举前两个元素作为 (x, y)(要求 (x \ge y))
  2. 剩下元素降序排列
  3. 按欧几里得递推 (a_{i+2} = a_i \bmod a_{i+1}) 验一遍(取模会越来越小,所以后面降序合理)

待验证

  • [x] 官方样例
  • ABC 难度,不对拍

代码

来源:problems/cf2234A/solution.cpp

/* Author: likely
 * Time: 2026-06-07 22:46:54
**/
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll maxn=105;
ll s[maxn+5],sb[maxn+5],gen[maxn+5];
ll pd(ll n){
    ll i,c[maxn+5];
    for(i=1;i<=n;i++) c[i]=gen[i];
    sort(c+1,c+n+1);
    for(i=1;i<=n;i++) if(c[i]!=sb[i]) return 0;
    return 1;
}
int main(){
    ll t,n,i,j,k,u,v,zc,mx;
    cin>>t;
    while(t--){
        cin>>n;
        mx=0;
        for(i=1;i<=n;i++){
            cin>>s[i];
            mx=max(mx,s[i]);
        }
        for(i=1;i<=n;i++) sb[i]=s[i];
        sort(sb+1,sb+n+1);
        zc=0;
        for(i=1;i<=n;i++){
            if(s[i]!=mx) continue;
            for(j=1;j<=n;j++){
                if(i==j) continue;
                u=max(s[i],s[j]);
                v=min(s[i],s[j]);
                gen[1]=u;
                gen[2]=v;
                for(k=3;k<=n;k++){
                    gen[k]=gen[k-2]%gen[k-1];
                    if(!gen[k]) break;
                }
                if(k<=n) continue;
                if(pd(n)){
                    cout<<u<<" "<<v<<"\n";
                    zc=1;
                    break;
                }
            }
            if(zc) break;
        }
        if(!zc) cout<<"-1\n";
    }
    return 0;
}
~  ~  The   End  ~  ~


 赏 
感谢您的支持,我会继续努力哒!
支付宝收款码
tips
文章二维码 分类标签:归档TypechoAutoUpload
文章标题:题解归档 - cf2234A
文章链接:https://www.fangshaonian.cn/archives/296/
最后编辑:2026 年 6 月 28 日 19:06 By 方少年
许可协议: 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
(*) 8 + 6 =
快来做第一个评论的人吧~