昨天晚上看了一道邏輯題:一個自然數在1700和1800之間,且被5除余3,被7除余4,被11除余6,求符合條件的數。題目后面寫着,有人看了幾分鍾便給出了答案。我很好奇,此人是如何解答的。
我自己先琢磨了下,拿筆算了半天,最后一個巧合的情況下,得到了答案。此題的一個關鍵且明顯的推論是:能被5除余3的數,肯定最后一位是3或者8。那么接下來怎么推呢?我從網上搜集了答案。
方案1:
這個數被5除余3,則此數個位數為3或8,
設這個數十位為x,則此數可表達為1703+10x,或1708+10x
當此數為1703+10x時,被7除余4,設商為y,則:
1703+10x=7y+4
1699+10x=7y
1699/7+10x/7=y
242+5/7+10x/7=y
由此可知10x+5可被7整除
x、y均為整數
則:x=3
此數為1733,
1733÷11=157余6,符合題目要求
同理計算當此數為1708+10x,無符合的數
當此數為1703+10x時,被7除余4,設商為y,則:
1703+10x=7y+4
1699+10x=7y
1699/7+10x/7=y
242+5/7+10x/7=y
由此可知10x+5可被7整除
x、y均為整數
則:x=3
此數為1733,
1733÷11=157余6,符合題目要求
同理計算當此數為1708+10x,無符合的數
所以答案為1733.
方案2:
把1700除以11得到154.54
把1800除以11得到163.64
所以在1700——1800符合被11除余6的數有10個,分別是,1700、1711、1722、1733、1744、1755、1766、1777、1788、1799.
把1800除以11得到163.64
所以在1700——1800符合被11除余6的數有10個,分別是,1700、1711、1722、1733、1744、1755、1766、1777、1788、1799.
在這10個數中減去4后能被7整除的只有1個,1733而1733減去3后正好能被5整除所以該企業總人數為1733人.
方案3:
這個還不簡單?我幫你算算.一個數除5余3,那么這個數的個位數是3或8又要除7余4.所以這個數就是5*7*M+18又因為只能在1700-1800之間.所以M=49或者M=50,
M=55*7*49+18=1733
5*7*50+18=1768
驗證1733和1768答案 就是1733
方案4,下面是我用程序的方式解答:
1 List<int> numbers = new List<int>(); 2 //最簡單,最自然的做法 3 for (int i = 1700; i <= 1800; i++) 4 { 5 if (i % 5 == 3 && i % 7 == 4 && i % 11 == 6) 6 { 7 numbers.Add(i); 8 } 9 } 10 11 //另外一種求解,個位為3或者8的數分別循環 12 for (int i = 1703; i <=1793; i=i+10) 13 { 14 if (i % 7 == 4 && i % 11 == 6) 15 { 16 numbers.Add(i); 17 } 18 } 19 for (int i = 1708; i <= 1798; i = i + 10) 20 { 21 if (i % 7 == 4 && i % 11 == 6) 22 { 23 numbers.Add(i); 24 } 25 } 26 27 //另外一種風格,把個位為3或者8的數合起來循環,程序簡潔 28 29 for (int i = 1703; i <=1798; i=i+5) 30 { 31 if (i % 7 == 4 && i % 11 == 6) 32 { 33 numbers.Add(i); 34 } 35 } 36 37 foreach (var n in numbers) 38 { 39 Console.WriteLine(n.ToString()); 40 }
朋友們,還有更簡單的辦法嗎?