问题:

爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最后剩1阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。只有每次跨7阶,最后才正好一阶不剩。请问在 1~N 内,有多少个数能满足?

问题分析

用变量x表示阶梯数,则x 应满足:

  1. 若每步跨2阶,则最后剩1阶 -- x%2=1;
  2. 若每步跨3阶,则最后剩2阶 -- x%3=2;
  3. 若每步跨5阶,则最后剩4阶 -- x%5=4;
  4. 若每步跨6阶,则最后剩5阶 -- x%6=5;
  5. 每次跨7阶,最后一阶不剩  -- x%7=0。

因此,阶梯数应该同时满足上面的所有条件。

分析:

该问题要求输入N值,求解出在的范围内存在多少个满足要求的阶梯数。在算法设计中,使用while循环以允许重复读入多个N值。声明一个变量假设为flag,利用语句 while(flag){循环体} 来进行控制,当flag的值为1时可以接着输入,若为0则结束循环。

对每一次读入的N值,都要判断在 1~N 的范围内存在的满足要求的阶梯数个数。

判断时可采用for循环,循环变量设为i,由题意,i的初值从7开始取即可,for循环的循环条件为 i<N。

for语句的循环体中使用问题分析中列出的5个条件来检验每一个i值,能够满足所有5个条件的i值即为所求的阶梯数。

下面是完整的代码:

  1. #include<stdio.h>
  2. int main()
  3. {
  4. long n, sum, i;
  5. int flag=1;
  6. while(flag)
  7. {
  8. printf("输入N:");
  9. scanf("%ld", &n);
  10. printf("在1-%ld之间的阶梯数为:\n", n);
  11. sum=0;
  12. for( i=7; i<=n; i++ )
  13. if( i%7 == 0 )
  14. if( i%6 == 5 )
  15. if( i%5 == 4 )
  16. if( i%3 == 2 )
  17. {
  18. sum++;
  19. printf("%ld\n", i);
  20. }
  21. printf("在1-%ld之间,有%ld个数可以满足爱因斯坦对阶梯的要求。\n", n, sum);
  22. printf("继续请输入1,否则输入0:\n");
  23. scanf("%d", &flag);
  24. }
  25. return 0;
  26. }

运行结果:
输入N:123
在1-123之间的阶梯数为:
119
在1-123之间,有1个数可以满足爱因斯坦对阶梯的要求。
继续请输入1,否则输入0:
1

输入N:1234
在1-1234之间的阶梯数为:
119
329
539
749
959
1169
在1-1234之间,有6个数可以满足爱因斯坦对阶梯的要求。
继续请输入1,否则输入0:

C语言:爱因斯坦的数学题相关推荐

  1. C/C++基础讲解(二十九)之数值计算与趣味数学篇(百钱百鸡问题、爱因斯坦的数学题、三色球问题与马克思手稿中的数学题)

    C/C++基础讲解(二十九)之数值计算与趣味数学篇(百钱百鸡问题.爱因斯坦的数学题.三色球问题与马克思手稿中的数学题) 程序之美 前言 很多时候,特别是刚步入大学的学子们,对于刚刚开展的计算机课程基本 ...

  2. 穷举法:一道爱因斯坦的数学题

    爱因斯坦的数学题 爱因斯坦出了一道这样的数学题:有一条很长的楼梯,若每步跨2阶,则最后剩1阶:若每步跨3阶,则最后剩2阶:若每步跨5阶,则最后剩4阶:若每步跨6阶则最后剩5阶:每次跨7阶,最后才正好一 ...

  3. C语言爱因斯坦的数学游戏,C语言实例 爱因斯坦的数学题

    您可能感兴趣的话题: C语言 核心提示:爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最最后剩一阶,若每步跨3 阶 爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最最后剩一 ...

  4. C语言每日一练——第83天:爱因斯坦的数学题

    C语言每日一练 2022年2月27日 文章目录 题目描述 问题分析 代码实现 运行结果 题目描述 爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最后剩1阶,若每步跨3阶,则最后剩2阶,若 ...

  5. 爱因斯坦的数学题(C语言)

    题目描述:  爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最后剩一阶,若每步跨3 阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶.只有每次跨7阶,最后才正好一阶 ...

  6. c语言的数学题目及答案,C语言编程实例:爱因斯坦的数学题

    爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最最后剩一阶,若每步跨3 阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶.只有每次跨7阶,最后才正好一阶不剩.请问这 ...

  7. 东方博宜OJ 1265 - 【入门】爱因斯坦的数学题

    题目描述: 爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最最后剩一阶,若每步跨3 阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶.只有每次跨7阶,最后才正好一阶 ...

  8. Python数学问题22:爱因斯坦的数学题

    1.  问题描述 爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最后剩一阶,若每步跨3 阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶.只有每次跨7阶,最后才正好 ...

  9. C语言--爱因斯坦谜题

    尊重原创:http://blog.csdn.net/aspirationflow/article/details/7748364 C语言编程快速解决爱因斯坦谜题 2012年7月15日 1      问 ...

最新文章

  1. 概率图模型PGM——D map, I map, perfect map
  2. Build Search for Common Use Cases
  3. Pile 0009: Vim命令梳理
  4. OLTP和OLAP的区别
  5. pytest十二:cmd命令行参数
  6. SSO单点登录学习总结(1)——单点登录(SSO)原理解析
  7. mybatis中使用小于号
  8. 华为中级编程题目python_华为研发工程师编程题2019(python3)
  9. jenkins 控制台输出中文乱码
  10. 咪咕音乐HTML代码,python3爬取咪咕音乐榜信息(附源代码)
  11. android 条形码 两边空白,几个条形码的问题
  12. iPhone 13不会自动锁屏该怎么解决?
  13. 不为环境所动就能成功——职场人士寓言(3)
  14. abi-dumper 理解
  15. 使注册用户名时不能包含特殊符号
  16. 人工智能行业每日必读(01·15)
  17. 【数据结构与算法】单链表的插入和删除
  18. 清理android根目录垃圾,寻找Android手机垃圾文件的根源
  19. 图像卷积与滤波的一些知识点
  20. SVN+SSH协议工作方式全解析,以Sourceforge为例讲解如何在Windows下配置TortoiseSVN和Su

热门文章

  1. php命名空间非限定名称,PHP命名空间 - osc_nnp3dgfb的个人空间 - OSCHINA - 中文开源技术交流社区...
  2. PHP全栈学习笔记17
  3. Win11和Win10怎么禁用驱动程序强制签名? 关闭Windows系统驱动强制签名的技巧?
  4. 来与大家分享一些我们珍藏的、有力量的语句
  5. linux学习好文章,好网站
  6. python入门之字符串_03
  7. Python easyOCR图像文本提取 初识
  8. 公众号榜单 | 2020·8月公众号原创排行榜重磅发布
  9. FL Studio20.9中文补丁
  10. jupyter 中重新 import 模块