从Codechef长征比赛中获得ANUGCD的WA

Getting WA in ANUGCD from Codechef March Long Contest

本文关键字:ANUGCD WA Codechef 长征      更新时间:2023-10-16

我在Codechef March Long Contest中的问题GCD条件中得到WA。
请告诉我我做错了什么,或者一些测试用例,代码产生错误的答案。

链接的问题

我已经使用RMQ(范围最大查询)为每个素数

for(i=0;i<limit;i++)
{
    int sz=b[i].size();
    if(!sz)continue;
    int level=0;
    cc[i].resize(sz);
    for(j=0;j<sz;j++)cc[i][j].push_back(b[i][j]);//level 0
    for(level=1;(1<<level)<=sz;level++)
    {
        for(j=0;j+(1<<level)<=sz;j++)
        {
            int c1=cc[i][j][level-1];
            int c2=cc[i][j+(1<<(level-1))][level-1];
            int mx=(a[c1]<a[c2])?c2:c1;
            cc[i][j].push_back(mx);
        }
    }
}

首先,我将

转换为如下结构:-

输入示例:- 10 6 20 15 8

(b[i]->存储i的因子索引)

b[2] -> 1、2、3、5
b[3]——> 2、4
b [5] -> 1, 3, 4


现在实现RMQ后,它将如下:-



(cc[i][j][k]存储b[i][j]和b[i][j+(2^k)-1]之间最大元素的索引)

cc [2] [0] -> 1, 2, 3, 5
cc[2][1]——> 1,3,3
cc [2] [2] -> 3

cc [3] [0] -> 2, 4
cc[3][1]——> 4

cc[5][0] -> 1、3、4
cc [5] [1] -> 3


代码

100 1
88 33 97年56 23日54 8 74 43 95 91 63 38 13 7 7 52 29日6 85 70 15 52 18 78 9 85 51 28 43 68 75 78 75 23 32 34 48 74 28 90 36 66 95 24 54 23 29 90 45 96 93 99 75 81 93 73 2 31 100 19 8 75 93 39 60 41 64 88 30 100 89 84 46 28 20 56 22 78 75 64 75 76 2 8 20 32 7 38 39 33 82 93
95 95 97

输出是-1 -1,但是gcd(38,95) = 19,所以ans应该是 381

第75行用'continue'代替'break'给出AC:)