2017-03-14 15 views
0

私はnの根を見つける必要があります。 tはテストケースの数を表します。各テストケースでは、nとmの間の行をスペースで区切ります。出力形式:すべてのテストケースについて、整数の場合はmのnのルート、それ以外の場合は-1を出力します。Python、数字のn番目の根を見つける

また、私が正しく行った各変数にはいくつかの制約があります。 のように1<=t<=10^5 1<n<30 1<=m<=10^9。私はエラーが何か分からない。

t= int (input()) 
if (t>=1) and (t<=100000) : 
    while (t>0) : 
     no=input() 
     e=no.split() 
     n=int (e[0]) 
     m=int (e[1]) 
     if(n>1) and (n<30) and (m>=1) and (m<=1000000000): 
      k=m**(1/n) 
      if (k==int(k)) : 
       print (int(k)) 
      else : 
       print(-1) 
     else : 
      print(-1) 
     t=t-1 
else: 
    print(-1) 
+1

削除バージョン固有のタグは、してください削除 – Aserre

+0

これは現在進行中のコンテストからですか?そうであれば、これはVTCされるべきであるからです。 – ABcDexter

+0

また、私は[それをチェックしました](http://ideone.com/0PHoEN)、エラーはありません。どのテストケースでも、 'n'と' m'が正しい順序で入力されているかどうかを確認してください。 – ABcDexter

答えて

0

次のコードは動作します:


import math 
t= int (input()) 
if (t>=1) and (t<=100000) : 
    while (t>0) : 
     no=input() 
     e=no.split() 
     n=int (e[0]) 
     m=int (e[1]) 
     if(n>1) and (n<30) and (m>=1) and (m<=1000000000): 
      k=m**(1/n) 
      #print(math.ceil(k*100)/100) 
      l=int (math.ceil(k*100)/100) 
      #print(l**n) 
      r=l**n 
      if (r==m) : 
       print (l) 
      else : 
       print(-1) 
     else : 
      print(-1) 
     t=t-1