Re: [問題] 跑出來的數字大的很離譜 & 變異數算不出來
: 程式碼在此:http://paste.plurk.com/show/235295/
:
:
: 這個程式是在寫一個叫做「孫子問題」的解(又被叫做韓信點兵)
:
: 題目大意:
: x = 3a + 2
: = 5b + 3
: = 7c + 2
: 求x的整數解,然後這個code是要求第五個與第七個整數解
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 140.114.219.129
: 推 wunshiun:其實不用for, sol[i] = 23+105*i; 這個就是第i個解 04/20 01:39
: 推 QQ29:我剛剛想用國中時代的數學方式想說23怎麼得來的~我發現用湊的 04/20 01:51
: → QQ29:有辦法用算的嗎? 04/20 01:51
不曉得你提到"用湊的"是指哪一種方式?
韓信點兵有簡單的算法(也許你也會認為這是用湊的)。
x % 3 = 2
x % 5 = 3
x % 7 = 2
求 x。
解法是分別求滿足其中一個條件的數值同時正交於其他兩個條件。
1) x % 3 = 2
(5 * 7) % 3 = 35 % 3 = 2 #
2) x % 5 = 3
(3 * 7) % 5 = 21 % 5 = 1
(21 * 3) % 5 = 63 % 5 = 3 #
3) x % 7 = 2
(3 * 5) % 7 = 15 % 7 = 1
(15 * 2) % 7 = 30 % 7 = 2 #
把三個 case 求得的數值加起來即是一解: 35 + 63 + 30 = 128
任一解減去 3, 5, 7 最小公倍數 105 的倍數可得最小正整數解:128 - 105 = 23
不過,這好像跟 C/C++ 沒有直接關係,所以.....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.173.137.58
※ 編輯: sbrhsieh 來自: 218.173.137.58 (04/20 20:46)
推
04/20 22:12, , 1F
04/20 22:12, 1F
※ 編輯: sbrhsieh 來自: 218.173.137.58 (04/20 22:23)
推
04/21 11:43, , 2F
04/21 11:43, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):