「LG8348-未知之花魅知之旅」题解
P8348 「Wdoi-6」未知之花魅知之旅
sol
首先我们发现,给出当前序列最后两个值 \(x,y\),那么序列下一个值只可能是 \(x+y,|x-y|\)。
其次我们发现一次加法可以被两次减法抵消:
\[(x,y)\rightarrow(y,x+y)\rightarrow(x+y,x)\rightarrow(x,y)
\]
因此我们可以认为,可以凑出最后最小对相同的 \((x,y)\) 可以位于同一序列。最后最小对的意思是只考虑减法,在满足题目条件下 \((x,y)\) 能产生的序列的最后两个数。
当最后最小对相同时,由于加法可以被抵消,因此我们可以以原对为起点,任意加减得到给出的要求对。在最后最小对相同的情况下,这是显然可行的。
考虑如何计算最后最小对,每次硬减显然会爆掉,观察后可以发现性质,可以把多次大小关系不变的大减小操作合并,倘若为奇数次操作完后互换二者顺序。这样就不会爆掉了。
code
pii solve(int x,int y){
    while(x!=y){
        if(x>y){
            int t=(x-k)/y;
            if(!t)break;
            x-=t*y;
            if(t&1)swap(x,y);
        }else{
            int t=(y-k)/x;
            if(!t)break;
            y-=t*x;
            if(t&1)swap(x,y);
        }  
    }
    return {x,y};
}
inline void Main(){
    read(a,b,x,y,k);
    if(a<k||b<k||x<k||y<k)return put("no");
    put(solve(a,b)==solve(x,y)?"yes":"no");
}

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号