2016-11-03 2 views
1

의 알 수없는 번호 : 내가 쓰고 싶은내가 쓰고 싶은 <code>n=1</code> 경우주기

for a1 in range(-10,10,1): 
    for a2 in range(-10,10,1): 
     if 13*a1+27*a2==1: 
      print('Success') 

n=3 경우 : 내가 쓰고 싶은

for a1 in range(-10,10,1): 
    if 13*a1 == 1: 
     print('Success') 

n=2 경우

for a1 in range(-10,10,1): 
    for a2 in range(-10,10,1): 
     for a3 in range(-10,10,1): 
      if 13*a1+27*a2+37*a3==1: 
       print('Success') 

n은 1 또는 2 또는 3 일 수 있습니다. 20. 012 솔루션 찾을 수

for a1 in range(-10, 10, 1): 
    for a2 in range(-10,10,1): 
    .... 
     for an in range(-10,10,1): #n is a random number from 1 to 20 
      if some_number_1*a1+...+some_number_n*an == 1: 
       print('Success') 

내 시도 : 36,699,548,375,856,내가 다음 코드를 쓸 수있는 방법 1 20에서 임의의 숫자입니다

  1. 어쩌면 우리가 재귀 사용을

    def recur(a): 
        for a in range(-10,10,1): 
         recur(a) 
    

    이 방법은 작동하지 않습니다.

  2. 아마도 목록을 사용할 수 있습니다. 예를 들어 ,

    list[1]=-10,..., 10 
    list[2]=-10,...,10 
        ... 
    list[n]=-10,...,10 
    

    그래서 우리는 매트릭스가 (N, 21). 하지만이 매트릭스를 사용하여 문제를 해결하는 방법을 알 수는 없습니다.

  3. 은 어쩌면 우리는 나무를 사용해야하지만

  4. 어쩌면 내가 방정식 a1*x1+a2*x2+...+an*xn=1를 해결하기 위해 라이브러리를 사용할 수 있습니다 그들과 함께 일한 적이 있지만 흥미 아니다. 나는이 작업을 어떻게 스스로 해결할 수 있는지 알고 싶다.

답변

2

사용 itertools.product :

def func(a): 
    for i in itertools.product(range(-10, 10), repeat=len(a)): 
     if sum(x*y for x, y in zip(i, a)) == 1: 
      print("success")