1. 程式人生 > >【Codeforces 1149 A】Prefix Sum Primes

【Codeforces 1149 A】Prefix Sum Primes

... pri rime clas rim prim int ORC primes

題意:給\(n\)個數,每個是\(1\)\(2\),現在要把它們排列,使得所有前綴和中質數數量最多。

思路:首先我們知道質數除了\(2\)都是奇數。

那麽我們最多的時候就是有2、3、5、7、。。。

就是\(2,1,2,2,...\)這種排列,或者\(1,1,1,...\)這種。

就是看是否存在2就好了。

稍微根據\(1\)\(2\)的個數分類討論一下就好了,就像

if (cnt2) {
    printf("2 "); -- cnt2;
    if (cnt1) {
        printf("1 "); -- cnt1;
        while (cnt2 --) printf("2 ");
        while (cnt1 --) printf("1 ");
    } else {
        while (cnt2 --) printf("2 ");
    }
} else {
    while (cnt1 --) printf("1 ");
}

這樣。

【Codeforces 1149 A】Prefix Sum Primes