有幾點你應該要立即注意到:
- 當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