方程解集 python
equation Solution Set in python
我有一个问题,我应该编写一个程序来求解这个方程
a2 + b2 + c2 = d
并在 Lexicographical order
中对解决方案进行排序,顺序没有生成,如果没有解决方案打印 -1 所以我编写我的代码并使用三个嵌套循环
d=int(raw_input())
p=0
for a in range(d+1):
a
for b in range(d+1):
b
for c in range(d+1):
c
if a**2+b**2+c**2==d:
p=1
print a,b,c
break
if p==0:
print -1
我的问题超出了时间限制 输入范围是 10^5 简单的输入和输出要清楚
6
输出
1 1 2
1 2 1
2 1 1
有什么想法可以避免该时间限制吗?
请注意,您的 break 语句仅从最内层的 for 循环中中断。
您可能想为此使用 p 并在每个 for 循环的末尾进行检查,即(未检查...):
d=int(raw_input())
p=0
for a in range(d+1):
a
for b in range(d+1):
b
for c in range(d+1):
c
if a**2+b**2+c**2==d:
p=1
lst = [a,b,c]
lst.sort()
for num in lst:
print num,
break
if p==1:
break
if p==1:
break
if p==0:
print -1
我有一个问题,我应该编写一个程序来求解这个方程
a2 + b2 + c2 = d
并在 Lexicographical order
中对解决方案进行排序,顺序没有生成,如果没有解决方案打印 -1 所以我编写我的代码并使用三个嵌套循环
d=int(raw_input())
p=0
for a in range(d+1):
a
for b in range(d+1):
b
for c in range(d+1):
c
if a**2+b**2+c**2==d:
p=1
print a,b,c
break
if p==0:
print -1
我的问题超出了时间限制 输入范围是 10^5 简单的输入和输出要清楚
6
输出
1 1 2
1 2 1
2 1 1
有什么想法可以避免该时间限制吗?
请注意,您的 break 语句仅从最内层的 for 循环中中断。 您可能想为此使用 p 并在每个 for 循环的末尾进行检查,即(未检查...):
d=int(raw_input())
p=0
for a in range(d+1):
a
for b in range(d+1):
b
for c in range(d+1):
c
if a**2+b**2+c**2==d:
p=1
lst = [a,b,c]
lst.sort()
for num in lst:
print num,
break
if p==1:
break
if p==1:
break
if p==0:
print -1