1 条题解

  • 0
    @ 2025-8-24 21:31:33

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar da32s1da
    **

    搬运于2025-08-24 21:31:33,当前版本为作者最后更新于2018-04-04 19:51:36,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    运用动规的思想,f[i][j]f[i][j]表示区间(i,j)(i,j)gcdgcd,则状态转移方程为

    f[i][j]=gcd(f[i][i],f[i+1][j])f[i][j]=gcd(f[i][i],f[i+1][j])

    边界f[i][i]=itselff[i][i]=itself,另外c++c++中有自带gcd:gcd:__gcd(x,y)

    #include<bits/stdc++.h>
    using namespace std;
    long long a,b,f[1001][1001],p,q;
    int main(){
        scanf("%lld%lld",&a,&b);
        for(int i=1;i<=a;i++) scanf("%lld",&f[i][i]);
        for(int i=a-1;i>=1;i--)
        for(int j=i+1;j<=a;j++)
        f[i][j]=__gcd(f[i][i],f[i+1][j]);
        for(int i=1;i<=b;i++)
        scanf("%lld%lld",&p,&q),
        printf("%lld\n",f[p][q]);
    }
    
    • 1

    信息

    ID
    858
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    0
    已通过
    0
    上传者