一道網易遊戲筆試題的不同解法
ABCDEFGH
* AJ
------------------
EJAHFDGKC
BDFHAJEC
------------------
CCCCCCCCC
下面我給出各種人群可能採取的解法:
1、小學生
由K+C=C,可知K=0 (1);
由ABCDEFGH*A=BDFHAJEC,未進位,可知0<A<=3 (2);
乘積CCCCCCCCC可被9整除,可推知乘數ABCDEFGH與AJ或雙雙可被3整除,或至少其中之一可被9整除;
由(1),可知A、B、C、D、E、F、G、H、J分別為1-9中不同的整數,A+B+C+D+E+F+G+H+J=45
設J=1,A+B+C+D+E+F+G+H=44,亦即ABCDEFGH不能被3整除,則AJ應可被9整除。綜合(2),可知0<A<=3、J=1條件下沒有9的倍數,故J不等於1;
設J=2,A+B+C+D+E+F+G+H=43,亦即ABCDEFGH不能被3整除,則AJ應可被9整除。綜合(2),可知0<A<=3、J=2條件下沒有9的倍數,故J不等於2;
設J=3,A+B+C+D+E+F+G+H=42,亦即ABCDEFGH被3整除但不被9整除,則AJ應可被3整除。在0<A<=3、J=3條件下,3的倍數僅有33,但不符合A不等於J的約束條件,故J不等於3;
以此類推,最後得到所有可能的AJ解,分別為18、19、27、29、36、39;
設A=1,則E、B最小值為2、3,E+B=C>=5,但1BCDEFGH*1J<=199999999*19=379999981,亦即C<4,兩相矛盾,故A不等於1;
設A=2,2BCDEFGH*2J對應的C合理區間為5-7,分別將C=5、6、7以及AJ=27、29代入,得到一個解ABCDEFGH=24691358,AJ=27;
設A=3,3BCDEFGH*3J對應的C合理區間為9,亦即C=9,分別將AJ=36、39代入,無解;
綜上,本題唯一解為:A=2、B=4、C=6、D=9、E=1、F=3、G=5、H=8、J=7、K=0
解畢。
2、中學生
使用C語言程式設計如下:
for(int a=0; a<=9; a++)
{for(int b=0; b<=9; b++)
{for(int c=0; c<=9; c++)
{for(int d=0; d<=9; d++)
{for(int e=0; e<=9; e++)
{for(int f=0; f<=9; f++)
{for(int g=0; g<=9; g++)
{for(int h=0; h<=9; h++)
{for(int j=0; j<=9; j++)
{for(int k=0; k<=9; k++)
{
double factor1 = a*1e7+b*1e6+c*1e5+d*1e4+e*1000+f*100+g*10+h;
double factor2 = a*10+j;
double mult = factor1*factor2;
double miracle = c*1e7+c*1e6+c*1e5+c*1e4+c*1000+c*100+c*10+c;
if (mult == miracle)
printf("Solution detected:\nABCDEFGH=%f\nAJ=%f",factor1,factor2);
}}}}}}}}}}
3、大學生
我讀中學時寫程式解過這道題,但是程式有bug,沒有判斷不同字母代表不同的數這一約束條件。
正確的做法應該是設一個0-9的整數集合,每個迴圈都只從集合中取數,每取一個值就從集合裡去掉它。
這就涉及到怎樣用陣列實現集合運算的問題,我的畢業論文就準備做這個課題。
4、研究生
我的考研老師沒教別的,只反覆強調了一句至理名言:解題的關鍵是掌握命題人意圖。
這道題考察的知識點是3、9倍數的各位之和也是3、9的倍數,認識到這一點,這道題就迎刃而解了。
我就不具體算了。
5、理科博士生
這是一個數論問題,我給你列出以下參考文獻,你去慢慢看吧。看完之後在下週的討論會上做一個十分鐘的發言。
6、文科博士生
通過這道數學題,每一個有良知的公民都會憂心忡忡地看到如今的少年兒童正在遭受怎樣的摧殘。總有人喜歡用科學至上的理念把自然與人性打壓得無處容身。我們的社會正在發生歧化,我們的傳統正在面臨毀滅,我們的藍天綠水逐漸消失,這些都是科學主義者造成的,現在他們又不遺餘力地迫害我們天真爛漫的兒童,企圖把他們變成沒有人性只知道機械思維的邏輯機器,blahblahblah
7、職員
唉,我們的系統比較薄弱,沒有辦法直接給出解答,害得我不得不一個數一個數地檢驗,已經摁了一上午計算器,勞動強度忒大了。。。。。。
8、總經理
小劉,手頭有什麼工作嗎?你看一下這個材料,做一個解決方案,明天八點之前放到我桌上。
9、董事長
劉祕書,你到我這裡來一下。