Re: [問題] 懇請協助設計C語言程式

看板C_and_CPP作者 (喲)時間14年前 (2010/10/30 08:27), 編輯推噓3(308)
留言11則, 4人參與, 最新討論串5/6 (看更多)
※ 引述《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)

10/30 17:51, , 1F
0之任意次方為奇數?是我記錯嗎?
10/30 17:51, 1F

10/30 18:20, , 2F
f(n) = 0^n, n>0=>f(n)=0, n<=0 => f(n)無義 ??
10/30 18:20, 2F

10/30 18:26, , 3F
0^1是幾? 0^2是幾?
10/30 18:26, 3F

10/30 18:27, , 4F
你沒記錯.
10/30 18:27, 4F
ok,改過了 ※ 編輯: yauhh 來自: 218.160.214.181 (10/30 18:29)

10/30 18:36, , 5F
0^1=0, 0^2=0, 所以好奇您文中說的0之任何次方為奇數
10/30 18:36, 5F

10/30 18:37, , 6F
抱歉,樓上推文慢了.誤會一場..
10/30 18:37, 6F

10/30 18:41, , 7F
對啊,我覺得小地方不用吵,弄錯了改一下就好了
10/30 18:41, 7F

10/30 22:48, , 8F
指數計算說明有兩個小瑕疵,2 應改為任何非0的0次方為1
10/30 22:48, 8F

10/30 22:49, , 9F
3 0的非0次方為0,會比較恰當,因為0的0次方數學上是無意義
10/30 22:49, 9F

10/30 22:56, , 10F
y大只是大致說明而已,0的任何小於等於0次方都是無意
10/30 22:56, 10F

10/30 22:58, , 11F
恩恩~~~謝謝指教 m(_@_)m
10/30 22:58, 11F
文章代碼(AID): #1CozRntF (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1CozRntF (C_and_CPP)