1. 程式人生 > 其它 >CF1514A Perfectly Imperfect Array 題解

CF1514A Perfectly Imperfect Array 題解

CF1514A Perfectly Imperfect Array 題解

Content

給定一個長度為 \(n\) 的序列,問是否存在一個非空子序列,使得這個子序列所有元素的積不是完全平方數。

資料範圍:\(t\) 組資料,\(1\leqslant t\leqslant 100\)\(1\leqslant n\leqslant 100\),序列中的元素在 \(1\)\(10^4\) 之間。

Solution

我們不難想到,如果這個序列中所有的元素都是完全平方數,那麼肯定不存在積不是完全平方數的子序列,因為無論怎麼取,積一定是完全平方數。

我們不妨稍微證明一下:設這個序列可以表示成 \(p_1^2,p_2^2,\dots,p_n^2\),然後假設存在積不是完全平方數的子序列,並且你取的元素的下標為 \(i_1,i_2\dots,i_k\)

,那麼他們的積就是 \(\prod\limits_{j=1}^ka_{i_j}=\prod\limits_{j=1}^kp_{i_j}^2=(\prod\limits_{i=1}^kp_{i_j})^2\),顯然這是一個完全平方數,與假設矛盾,故不存在積不是完全平方數的子序列。證畢。

我們再看,如果假設存在非完全平方數的元素,由於單個元素也能組成子序列,因此我們只需要取那個非完全平方數的元素,就可以滿足題目要求。

那麼這道題就寫完了。

Code

int main() {
    MT {
        int n = Rint, fl = 0; while(n--) {
            int x = Rint;
            if((int)sqrt(x) * (int)sqrt(x) != x) fl = 1;
        }
        fl ? YES : NO;
    }    
    return 0;
}