Re: [問題] 懇請協助設計C語言程式
※ 引述《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
10/30 17:51, 1F
→
10/30 18:20, , 2F
10/30 18:20, 2F
→
10/30 18:26, , 3F
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
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
10/30 22:48, 8F
→
10/30 22:49, , 9F
10/30 22:49, 9F
→
10/30 22:56, , 10F
10/30 22:56, 10F
推
10/30 22:58, , 11F
10/30 22:58, 11F
討論串 (同標題文章)