看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《ksjksj (法輪大法好)》之銘言: : f(n)=(a+1)^n-(a)^n必為奇數,a,n為自然數 : a=1,...1000 : n=1,...1000 : 這個問題我想了兩週 : 網路上也沒有現成的程式碼可套用 : 懇請高手協助 不勝感荷 相較於一般計算是直接把f(n)求出來,在檢查奇數時, 會把所有的計算過程全都轉換為奇數檢查過程, 也就是說: odd_f(n) = odd_sub(odd_expo(a+1, n), odd_expo(a, n)) 指數計算的奇數檢查有三條規則: 1. 奇數的任何次數為奇數, 偶數的任何次數為偶數. 2. 任何數的 0 次為奇數. 3. 0 的任何次數為偶數. int odd_expo(int a, int b) { if (b == 0) if (a == 0) { printf("0^0 not determined.\n"); exit(0); } else return 1; if (a == 0) return 0; return (a % 2 != 0); } 加減法的檢查,二個數中只能有一個奇數,才會得到奇數: int odd_sub(int o_a, int o_b) { return ((o_a != 0 && o_b == 0) || (o_a == 0 && o_b != 0)); } 然後,主程式測測 a=1..1000, n=1..1000 的答案: int main() { int a, n; int result = 1; for (a=1; a<=1000; a++) { for (n=1; n<=1000; n++) { int t = odd_sub(odd_expo(a+1, n), odd_expo(a, n)); result = result && t; } } if (result != 0) printf("For all a=1..1000, n=1..1000, f(a,n) = (a+1)^n - a^n" " is odd.\n"); else pritf("Nil."); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.160.214.181 ※ 編輯: yauhh 來自: 218.160.214.181 (10/30 17:37)
tropical72:0之任意次方為奇數?是我記錯嗎? 10/30 17:51
tropical72:f(n) = 0^n, n>0=>f(n)=0, n<=0 => f(n)無義 ?? 10/30 18:20
yauhh:0^1是幾? 0^2是幾? 10/30 18:26
zerodevil:你沒記錯. 10/30 18:27
ok,改過了 ※ 編輯: yauhh 來自: 218.160.214.181 (10/30 18:29)
tropical72:0^1=0, 0^2=0, 所以好奇您文中說的0之任何次方為奇數 10/30 18:36
tropical72:抱歉,樓上推文慢了.誤會一場.. 10/30 18:37
yauhh:對啊,我覺得小地方不用吵,弄錯了改一下就好了 10/30 18:41
csihcs:指數計算說明有兩個小瑕疵,2 應改為任何非0的0次方為1 10/30 22:48
csihcs:3 0的非0次方為0,會比較恰當,因為0的0次方數學上是無意義 10/30 22:49
tropical72:y大只是大致說明而已,0的任何小於等於0次方都是無意 10/30 22:56
csihcs:恩恩~~~謝謝指教 m(_@_)m 10/30 22:58