03.05 一個人a年b月c日出生,a,b,c三數的乘積為428575,這個人是什麼時候出生的?

胡老師數學教育


第一步:先把428575質因數分解為:5²×7×31×79

第二步:分析31只可能是日期項;月份可能是5或7;

第三步:確定年份

①,如果月份是5,剩下數字相乘:5×7×79=2765.排除

②,所以月份為7,剩下數字相乘:5×5×79=1975.正解

答:此人生日為1975年7月31日。

屬於小學奧數數論專題,再加上推理就OK了。


一學堂王老師


上面有個哥們用python寫了幾行代碼搞定了,正巧最近在學matlab,拿這試試手。

這個裡面的i就是abc的乘積,分別限定a是正整數、b是1-12的正整數、c是1到31的正整數。輸入i=428575就可以得到結果了。

下面是結果:

顯示的比較亂,分別是年月日,一一對應就行了。

下面可以換一個i,試試365,結果比較少,看的清楚一些

~~~~~~~~~~~~~~~~~~~

分割線

很多人說結果看不清,我也很無奈啊,上傳之前我還看了的,被壓縮了😓

再貼張結果圖吧

也就是:1975年7月31日;2449年7月25日;2765年5月31日;12245年5月7日;12245年7月5日;13825年1月31日;17143年1月25日;17143年5月5日;61225年1月7日;61225年7月1日;85715年1月5日;85715年5月1日;428575年1月1日.一共13種

i=365時,3種情況。

即:73年1月5日;73年5月1日;365年1月1日。

再次分割。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

有人問,abc為什麼一定都是奇數?因為428575是奇數,如果有一個為偶數,那麼乘積就是偶數。



三石李三石


其實這算是很簡單的數學問題。

說簡單,不是因為能不通過計算就一眼看出答案,而是可以簡單粗暴的換成編程的問題,讓計算能力強大的電腦直接給出答案,或者在不存在答案、無解時也能告訴我們。

直接用python寫幾行代碼,簡單粗暴的把 a從1到428575,b從1到12,c從1到31依次試個遍,算是數學上的窮舉法,對於個人而言需要計算428575*12*31=159429900次,一輩子可能都算不完,但電腦一下子就能給出所有結果。

錄製了GIF動圖,有圖有真相。

哪怕這是42萬年後的人類看到,也能輕鬆給出,1975年7月31日——這個我們當下唯一答案除外的其他所有結果。

其實很多問題就是這樣,看起來很複雜很麻煩,卻能巧妙轉化成其他問題,然後輕鬆解決。


爬蟲和數據可視化


看到這一道題,其實有很多的解決辦法,對於不同人來說,不等式方程就能解決;對於程序員來說,一段C代碼輕鬆解決。如果這是一道小學題,可能還有更巧妙的辦法,所以,aliquis有人科技決定針對這一道題做個各部門結題對比。

1.首先上場的是原欄目‘電影吐槽姐“的主持人。。。她家上高中的兒子,不等式方程解決方案:

我們知道,月份應該在1~12之間;日應該在1~31之間,且因為1、3、5、7、8、10、12為大月,31天,4、6、9、11為小月,僅30天,閏年4年一次,2月有29天,否則僅有28天。

所以b∈【1,12】;c∈【1,31】(特殊月份暫時忽略)

以此來看,除了年份無法確定,月與日都確定了下來,但是我們知道無論怎麼相乘,年月日必須是整數集合才合理。

∵a×b×c=428575 且【1,12】;c∈【1,31】,abc∈N*

∴b只能為1月/5月/7月

那麼如果b=1,則c可以等於1、5、7、25、31,則a=428575、85715、61225、17143、13825

∴以此類推,可以得到13個符合的日期,由於本題目並沒有規定這個人是現在存在還是未來出生並存在,所以以下答案均符合本題(題目嚴謹的重要性)

428575年1月1日、85715年1月5日、61225年1月7日、17143年1月25日、13825年1月31日

85715年5月1日、17143年5月5日、12245年5月7日、2765年5月31日

61225年7月1日、12245年7月5日、2449年7月25日、1975年7月31日

2.接下來是技術部的各位程序猿和直男癌們(別打我。。。)

這個問題沒什麼探討的價值,真的,在C裡做個窮舉就能輕鬆解決。

#include <stdio.h>

int a,b,c;

int main()

{

for(a=1;a<=428575;a++)

{

for(b=1;b<=12;b++)

{

for(c=1;c<=31;c++)

{

if(a==2 && b>29){}

else if((a==4||a==6||a==9||a==11)&& b>30){}

else if(a*b*c == 428575)

{

printf("%d年,%i月,%i日\\n\

aliquis唯一數碼


把這個題給兒子看了一下,兒子第一反應是要功過反“分解質因數”的方式來做。我甚是欣慰!

然後建議他用C++編程試試,經過幾次調試,結果出來了。

#include <iostream>

#include <cstring>

#include <stdio.h>

using namespace std;

int main()

{

int a,b,c;

for(a=1;a<=428575;a++)

{

for(b=1;b<=12;b++)

{

c=428575/(a*b);

if(a*b*c==428575&&c<=31)

{

cout <


胡老師數學教育


出生時間可能是以下十三個日期:

428575年1月1日;

85715年1月5日;85715年5月1日;

61225年1月7日;61225年7月1日;

17143年5月5日;17143年1月25日;

13825年1月31日;

12245年5月7日;

12245年7月5日;

2765年5月31日;

2449年7月25日;

1975年7月31日。

先把42857分解質因數:

428575=5*5*7*31*79

因為一個月最多有31日,即日為1至31,所以可能是1、5、7、25、31;

一年有12個月,即月為1至12,所以可能是1月、5月或7月

推出這個人可能的出生日期是:

1月1日;1月5日;1月7日;1月25日;1月31日;

5月1日;5月5日;5月7日;5月31日;因為5月已經用掉一個5,所以不可能有5月25日;

7月1日;7月5日;7月25日,7月31日;

計算出相應的年份即可。


小黑小黑Luo


本題可以分兩步來解答。

第一步:先將428575分解質因數,結果為

428575=5×5×7×31×79


第二步:確定年月日,本題隱含條件有兩個,即1≦b≦12,1≦c≦31。

(1)如果b=5,當c=31時,得出a=2765。

(2)如果b=5,當c=7時,得出a=12245。

(3)如果b=7,當c=5時,得出a=12245。

(4)如果b=7,當c=25時,得出a=2449。

(5)如果b=7,當c=31時,得出a=1975。

通過以上討論,可以看出,只有(5)符合題意,因此,此人的出生日期為1975年7月31日。


分享到:


相關文章: