2013-04-10 29 views
-4
import java.util.*; 
import java.io.*; 

public class pool 
{ 
    public static void main(String args[])throws IOException 
    { 
     Scanner in=new Scanner(System.in); 
     int t=in.nextInt(); 
     for(int i=1;i<=t;i++) 
     { 
      int a=in.nextInt(); 
      if ((360.0/(180-a))==Math.round((360.0/(180-a)))) 
       System.out.println("yes"); 
      else 
       System.out.println("NO"); 
     } 
    } 
} 
+0

我聲明't = Integer.MAX_INT'。我怎麼能保證它在不到十分之一秒的時間內執行? (另外,一般情況下I/O速度很慢 - 不會打印出值,而是填充一些外部結構以便稍後引用它們會更理想。) – Makoto 2013-04-10 21:55:40

+1

此問題可能會在另一個[Stack Exchange社區]上更好地提出(http:// stackexchange.com /)... – summea 2013-04-10 21:55:51

回答

1

可以消除調用回合和浮點arithmatic比較360/(180-a)(540-a)/(180-a)

360.0/(180.0-a)+1.0地板是一樣Math.Round(360.0/(180.0-a)。用一些簡單的代數等於(540-a)/(180-a),當使用整數算術時,該值的底部將是結果。

當然,這並不能保證您發佈的時間限制。