Codeforces Round #702 (Div. 3)---------------C. Sum of Cubes(对Python集合和列表的加深认识)

Codeforces Round #702 (Div. 3)---------------C. Sum of Cubes(对Python集合和列表的加深认识)

题目描述:

给定正整数x,问是否存在整数ab,满足(a,b\geq 1),使得a^3+b^3=x,存在则输出YES,不存在输出NO。共 t 组样例,对于每组样例,输入一个 x,输出YES 或者NO,(1\leq t\leq 100,1\leq x\leq 10^{12}

Example

Input

7    #t 代表样例数
1
2
4
34
35
16
703657519796

Output

NO
YES
NO
NO
YES
YES
YES

分析

a 与 b 可互换,且(a,b\geq 1),所以两个数一定小于10000(10000^3=10^{12})所以可以存储a的三次方的值,然后用x减去a^3,看看结果在不在存储的值中

Python代码实现

1.用列表:用列表存储后看x-a^3是否在列表中,发现超时,百度后了解到元素是否在列表中采用遍历列表的方式实现。

import math
def getlist():
    return [int(i) for i in input().split()]
def getmany():
    return map(int,input().split())
def getstr():
    return [str(i) for i in input().split()]
#--------------------------------------------------------------------------
l=[]
for a in range(1,10000):
        l.append(a**3)
def solve():
    x=int(input())
    for i in l:
        if x-i in l:
            print("YES")
            break
    else:
        print("NO")
    
        
    

    
#--------------------------------------------------------------------------
for _ in range(int(input())):
    solve()

2.用集合:元素是否在集合中运用了哈希,大幅提升速度,AC了

import math
def getlist():
    return [int(i) for i in input().split()]
def getmany():
    return map(int,input().split())
def getstr():
    return [str(i) for i in input().split()]
#--------------------------------------------------------------------------
s=set()
for a in range(1,10000):
        s.add(a**3)
def solve():
    x=int(input())
    for i in s:
        if x-i in s:
            print("YES")
            break
    else:
        print("NO")
    
        
    
 
    
#--------------------------------------------------------------------------
for _ in range(int(input())):
    solve()

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值