有幾點你應該要立即注意到:
- 當Mabu已經完成他第n次的巡迴,第n個開關從來沒被再次改變。
- 如果開關被改變奇數次(因為一定是開->關->開....)答案就是yes
- 每當為n的因數時,第n個開關會被改變
藉由這個想法,我們該如何知道一個數字的因數是奇數個還是偶數個?對於每個n都有著一個低於sqrt(n)和一個高於sqrt(n)的因數,這個假設除非n是一個完全平方數,否則他就會有偶數個因數,所以這個問題可以被想為決定n是否是一個完全平方數。
/**
* Time(ZeroJudge):78ms
* Date: 2010-1-28
*
* @author Kurorido
*/
import java.util.Scanner;
public class JAVA {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
double num = sc.nextDouble();
if(num == 0.0)
break;
double sqrtNum = Math.ceil(Math.sqrt(num));
if(num == sqrtNum * sqrtNum)
System.out.println("yes");
else
System.out.println("no");
}
}
}
比排行榜上最快慢了6ms...我一開始被型態搞死...Online Judge貌似不讓人強制轉型= =?
如果if( int == double ) 這種 compare 會被打死
如果(int)Math.sqrt(num) 貌似也會掛掉= =
No comments:
Post a Comment