您的位置:首页 > 其它

重排--是否存在每两个相邻元素的乘积都是4的倍数的排列

2017-09-09 23:41 239 查看
分析如下:

A 不是2的倍数,在两侧则需要一个4的倍数,在中间则需要两个4的倍数

B 是2的倍数不是4的倍数,可以随意连接,即任意个2的倍数不影响结果,考虑只有一个2的倍数的特殊情况

C 是4的倍数,无论放在哪里皆可

那么:

只需要 A 的个数小于等于C的个数那么就可以

特殊情况如下:只有一个B的时候,没有C,不能构成

                         只有 A 和 C , A的数目比C小1 , 也可以

以下代码未考虑特殊情况,需修正

#coding = utf-8

import sys

def countc(nn):

    c0 = 0

    c1 = 0

    c2 = 0

    for i in range(len(nn)):

        t = int(nn[i])

        if t % 4 == 0:

            c2 += 1

            continue

        else: 

            if t % 2 == 0:

                c1 += 1

                continue

            else:

                c0 += 1

                continue

    return c0,c1,c2

if __name__ == "__main__":

    n = int(raw_input().strip())

    y = 'Yes'

    no = 'No'

    ans = []

    for i in range(n):

        c0 = 0

        c1 = 0

        c2 = 0

        nn = n = int(raw_input().strip())

        line = raw_input().strip().split()

        c0,c1,c2 = countc(line)

        if c0 <= c2:

            ans.append(y)

        else:

            ans.append(no)

    for i in ans:

        print i
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐