這道好玩的數學題該如何解答?

可以使用各種方法來證明,或高深的方法,或簡單的方法,如果無解,請證偽


謝邀。這道題是錯的。

把四個式子加起來,左邊相當於1-8中的六個數加起來減去其中的兩個數,右邊等於19.給等式兩邊加上減去的那兩個數和的2倍,則左邊相當於1-8加起來,為36,;而右邊等於19加上兩個數和的2倍。奇偶性矛盾。


引用樓上的做法,
左邊加起來為19時,得36-19=17為兩數和,又最大和為8+7=15,故矛盾
此題無解

勉強算作另一種思路吧。


試遍所有情況,發現沒有一個解。

#include &
#include &

//input:1,2,3,4,5,6,7,8

//equations:
//? + ? = 7 , 3 choices : 1 2 3
//? + ? = 9 , 4 choices : 1 2 3 4
//? - ? = 2 , 6 choices : 3 4 5 6 7 8
//? - ? = 1 , 7 choices : 2 3 4 5 6 7 8

class Solution
{
public:
void Solve();
void OnSolve( int i, int j, int k, int m );

private:
std::set& m_Solution;
};

int main()
{
Solution s;
s.Solve();
return 0;

}

void Solution::OnSolve( int i, int j, int k, int m )
{
m_Solution.insert( { i,7 - i,j,9 - j,k,k - 2,m,m - 1 } );

if ( 8 == m_Solution.size() )//if duplicates exist,inevitably size!=8
{
std::cout &<&< "Bingo.." &<&< std::endl; } else { m_Solution.clear(); } } void Solution::Solve() { for ( int i = 1; i &<= 3; ++i ) for ( int j = 1; j &<= 4; ++j ) for ( int k = 3; k &<= 8; ++k ) for ( int m = 2; m &<= 8; ++m ) OnSolve( i, j, k, m ); }


推薦閱讀:

TAG:數學 | 趣味數學 | 科學 | 矩陣 | 方程 |