2012-09-02 36 views
0

我想在Codechef解決this問題。現在,根據問題,如果有10間房子,他可以選擇任一連續3房或4或5,......或10.現在的方式可以選擇連續m房屋數量從n房屋犯錯誤是n-m+1 。所以,我必須採取的n-m+1的總和與m從3開始高達n。也就是說,我從n-2n-1添加數字高達1。即在AP存在,則該值應爲((n-2)(n-1))/2(由式n(n+1)/2)。這是這段代碼所做的。但是我收到了錯誤的答覆信息。我在哪裏犯錯? pow是爲了做模冪運算,所以這個數字在任何階段都不會脫離界限。找不到什麼毛病我的算法

testcase = int(raw_input()) 
m = 10**9 + 7 
for i in xrange(0,testcase): 
    n = int(raw_input()) 
    ans = ((pow(n,2,m)-3*n+2)/2)%m 
    print ans 
+7

這是一個正在運行的較量..如果妳回答這是不公平的人。 –

+0

是的,這就是爲什麼我不提交這一個。前一段時間,我在這個論壇上提出了另一個類似的問題,儘管我得到了一個有效的答案,但我沒有提交。 – SexyBeast

+0

您是否用小數字對其進行了測試並手動計算了預期結果?也許測試用例一個低於3,並返回一個負 – Gir

回答

2

你也算一下,比如說這種情況嗎?

(* * * * * * * * * *) 
^^^^^^

這只是一個我相信你跳過的例子。 (如果我沒有按照你的算法正確)

這只是一個暗示,雖然要求運行競賽題也不行的。

+0

O,所以你說,有可能是一個選擇選擇連續3+的房子更棕褐色的一種方式。對。 – SexyBeast

+0

你也可以選擇其他房屋的任何其他組合。對於5:1,2,3,5; 1,2,3,4都是錯誤的,儘管5只是一個房子。更爲複雜的是1,2,3,4可能會被計算兩次 - 一次是3 +剩餘選擇的組合,第二次是連續選擇4個房屋 – Gir