首页 > 代码库 > 一个自然数在1700和1800之间,且被5除余3,被7除余4,被11除余6,求符合条件的数
一个自然数在1700和1800之间,且被5除余3,被7除余4,被11除余6,求符合条件的数
昨天晚上看了一道逻辑题:一个自然数在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 }
朋友们,还有更简单的办法吗?
一个自然数在1700和1800之间,且被5除余3,被7除余4,被11除余6,求符合条件的数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。