cf891a Pride

Posted poorpool

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cf891a Pride相关的知识,希望对你有一定的参考价值。

倘若存在 1,那么答案是 \(n-cnt_1\)
否则,设最短的公约数为 1 的区间长度为 \(minlen\),答案是 \(minlen-1+n-1\)

#include <iostream>
#include <cstdio>
using namespace std;
int n, ans, gcd[2005][2005], cnt;
int getGcd(int x, int y){
    return !y?x:getGcd(y, x%y);
}
int getAns(){
    if(cnt) return n-cnt;
    for(int l=2; l<=n; l++)
        for(int i=1; i<=n-l+1; i++){
            int j=i+l-1;
            gcd[i][j] = getGcd(gcd[i][j-1], gcd[j][j]);
            if(gcd[i][j]==1)    return n+l-2;
        }
    return -1;
}
int main(){
    cin>>n;
    for(int i=1; i<=n; i++){
        scanf("%d", &gcd[i][i]);
        if(gcd[i][i]==1)    cnt++;
    }
    ans = getAns();
    cout<<ans<<endl;
    return 0;
}

以上是关于cf891a Pride的主要内容,如果未能解决你的问题,请参考以下文章

A. Pride

Pride and Prejudice

如何从后台弹出片段

Pride and Prejudice(傲慢与偏见)

Pride CodeForces

2018Day16 | Pride and Prejudice