美团编程第一个太简单,第二个有点尴尬,从技术改回暴力

#第一题应该大部分都是AC
#第二题一开始试了一下暴力,果然只有70%,看来是内存溢出
#然而对于能被7整除的数可以做如下判断:
/*若一个整数的个位数字截去,再从余下的数中,减去个位数的2倍,
如果差是7的倍数,则原数能被7整除。如果差太大或心算不易看出是否7的倍数,
就需要继续上述「截尾、倍大、相减、验差」的过程,直到能清楚判断为止。
例如,判断133是否7的倍数的过程如下:13-3×2=7,所以133是7的倍数;
又例如判断6139是否7的倍数的过程如下:613-9×2=595 , 59-5×2=49,所以6139是7的倍数,余类推*/

def judge(n):
    l_n = len(n)
    while l_n > 3:
        n = str(int(n[:(l_n-1)]) - int(n[-1])*2)
#这里也尝试过将int改为long等其他类型以免溢出
        l_n = len(n)
    if int(n) % 7 == 0:
        return True
    else:
        return False
    
    


n = int(raw_input())
s = raw_input().split()
num = 0
for i in range(n-1):
    for j in range(i+1,n):
        l = s[i]+s[j]
        if judge(l):
            num += 1
        r = s[j]+s[i]
        if judge(r):
            num += 1
print num


#最后发现只能10%,不应该啊,就算也会溢出,那暴力过的那70%应该没问题啊!!!
#求大神解答

#美团#
全部评论
用贪心
点赞 回复 分享
发布于 2017-09-15 01:15
第二题的AC是看尾数是否为1。。。
点赞 回复 分享
发布于 2017-09-14 21:41
不用暴力,枚举余数和位数就行,余数、位数一样的可以看成同一种数
点赞 回复 分享
发布于 2017-09-14 21:41
我用暴力也只有70%
点赞 回复 分享
发布于 2017-09-14 21:37

相关推荐

牛客501015981号:前面志愿结束了,在大池子里面被其他部门捞了
点赞 评论 收藏
分享
03-29 12:10
门头沟学院 C++
挣K存W养DOG:散漫消极者淘汰,一眼坑爹。实习几个月转正的时候说你加班太少,能力还行态度不够积极裁了,马上老实。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务