一个自然数在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,无符合的数

所以答案为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.

在这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                 }

朋友们,还有更简单的办法吗?

时间: 2024-08-07 04:33:43

一个自然数在1700和1800之间,且被5除余3,被7除余4,被11除余6,求符合条件的数的相关文章

偶然在博客中见对百度一个面试题的探讨,写些自己的看法以及指出探讨中不对的观点:百度面试题:求绝对值最小的数 有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现 例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。

今天申请了博客园账号,在下班后阅览博客时发现了一个关于百度面试题探讨的博客(其实是个很基础的问题),此博客url为:http://www.blogjava.net/nokiaguy/archive/2013/01/30/394920.html 其中下面有人评论为: 有序列表查找显然二分啊,博主貌似对java的arrays和collections不是很熟. private static int getMinAbsoluteValue(final int[] source) { int index

MongoDB是一个介于关系数据库和非关系数据库之间的产品

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型.Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引.它的特点是高性能.易部署.易使用,存储数据非常方便. MongoDB[1]的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的R

编写一个程序找出100~999之间所有的水仙花数

如果一个3位数等于其各位的立方和,称该数为水仙花数. 如,所以407是一个水仙花数,编写一个程序找出100~999之间所有的水仙花数. 1 #include<stdio.h> 2 #include<stdlib.h> 3 //判断水仙花数,是则返回1 4 int isNarcissus(int n); 5 6 int main() 7 { 8 int i; 9 for(i = 100; i < 1000; i++) 10 if(isNarcissus(i)) 11 print

4.设计一个程序,计算1~20之间所有能被3整除的数之和。

TITLE:设计一个程序,计算1~20之间所有能被3整除的数之和. ANSWER1: 1 #include <stdio.h> 2 3 int main(){ 4 int i,ans=0; 5 for(i=1;i<=20;i++){ 6 ans+=i%3?0:i; 7 } 8 printf("%d\n",ans); 9 return 0; 10 } ANSWER2: 1 #include <stdio.h> 2 3 int main(){ 4 int i,

算法题:给你一个自然数N,求[6, N]之内的全部素数中, 两两之和为偶数的那些偶数。

/* 算法题:给你一个自然数N,求[6, N]之内的全部素数中. 两两之和为偶数的那些偶数. */ #include <iostream> using namespace std; void Grial(int n) { int *b = new int[n]; int k = 0; b[k++] = 2; b[k++] = 3; b[k++] = 5; for (int i = 6; i < n; i++) { int j; for (j = 0; j < (k+1) / 2 ;

《Python CookBook2》 第一章 文本 - 每次处理一个字符 &amp;&amp; 字符和字符值之间的转换

文本 - 总结: 什么是文本Python 中的string 类型是不可变类型.文本,一个字符的矩阵,每一个单独的文本快可以被缩进和组织起来. 基本的文本操作①解析数据并将数据放入程序内部的结构中:②将数据以某种方式转化为另一种相似的形式,数据本身发生了改变:③生成全新的数据 每次处理一个字符: 任务用每次处理一个字符的方式处理字符串. 解决方案可以创建一个列表,列表的子项是字符串的字符.代码如下: >>> thelist = list('thestring') >>>

python 用户在键盘上输入一个自然数n,然后在区间[1, 5n]上随机生成n个不重复的自然数,输出这些自然数, 然后继续编写代码对这些自然数进行处理,只保留所有偶数,并输出这些偶数

#用户在键盘上输入一个自然数n,然后在区间[1, 5n]上随机生成n个不重复的自然数,输出这些自然数,# 然后继续编写代码对这些自然数进行处理,只保留所有偶数,并输出这些偶数import randomn=int(input("请输入整数"))shu=set()i=0while True: num=random.choice(range(1,5*n+1))#生成随机数 shu.add(num) if len(shu)==n: breakprint("n个不重复的随机数是:&qu

C# ArcgisEngine开发中,对一个图层进行过滤,只显示符合条件的要素

转自原文 C# ArcgisEngine开发中,对一个图层进行过滤,只显示符合条件的要素 有时候,我们要对图层上的地物进行有选择性的显示,以此来满足实际的功能要求. 按下面介绍的方法可轻松实现图层属性过滤显示: 1.当图层已经加载时 private void ShowByFilter(AxMapControl sMapCtr, IFeatureLayer sFlyr, string sFilter) { ESRI.ArcGIS.Carto.IFeatureLayerDefinition pDef

[ jquery 位置选择器 :first-child :last-child ] 强化说明:选取属于其父元素和所有兄弟元素中子元素集合中处于第一个(最后一个)位置上符合条件的元素

强化说明:选取属于其父元素和所有兄弟元素中子元素集合中处于第一个(最后一个)位置上符合条件的元素 注意和:first :last 的区别 实例: <!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title> <meta http-equiv='description' content='this is my page'> <meta http