胡老師數學教育
第一步:先把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日。