首页 > 其他分享 >爱因斯坦的数学题

爱因斯坦的数学题

时间:2023-05-12 22:37:36浏览次数:45  
标签:爱因斯坦 每步 最后 x% 循环 数学题 阶梯


1.问题描述
爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最后剩一阶,若 每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。 只有每次跨7阶,最后才正好一阶不剩。请问在1~N内,有多少个数能满足?
2.问题分析
根据题意,用变量x表示阶梯数,则阶梯数x 应该满足:
口若每步跨2阶,则最后剩1阶
x%2=1
若每步跨3阶,则最后剩2阶
x%3=2
若每步跨5阶,则最后剩4阶
x%5=4
若每步跨6阶,则最后剩5阶
x%6=5
口若每步跨7阶,最后才正好一阶不剩-- x%7=0
因此,阶梯数应该同时满足上面的所有条件。
3.算法设计
该问题要求输入N 值,求解出在1-N 的范围内存在多少个满足要求的阶梯数。在算法 设计中,我们使用while循环以允许重复读入多个N值,直到遇到文件结束符EOF才结束 输入。
对每一次读入的N 值,都要判断在1-N 的范围内存在的满足要求的阶梯数个数。判断 时可采用for 循环,循环变量设为i,由题意,i 的初值从7 开始取即可,for 循环的循环条 件为i<N。for语句的循环体中使用问题分析中列出的5 个条件来检验每一个i值,能够满 足所有5个条件的i值即为所求的阶梯数。

4.程序流程图

5.代码实现

#include<stdio.h>
main()
{
long n,sum,i;
while(scanf("%ld",&n)!=EOF)
{

/*输入n值,若n不是文件结束符则执行循环体*/
printf("在1-%ld之间的阶梯数为:\n",n);  sum=0;
for(i=7;i<=n;i++)
/*阶梯数所满足的条件*/
if(i%7==0)
if(i%6==5)
if(i%5==4)
if(i%3==2)
{

sum++;/*sum 记录1-n之间的满足条件的阶梯个数*/
printf("%ld\n",i);
}
printf("在1-%ld之间,有%ld个数可以满足爱因斯坦对阶梯的要求。\n",n,sum);
}
}

 

   

标签:爱因斯坦,每步,最后,x%,循环,数学题,阶梯
From: https://www.cnblogs.com/tianpeisen/p/17396425.html

相关文章

  • 17.爱因斯坦的数学问题
       代码实现:#include<stdio.h>intmain(){inti;//阶梯数intcount=0;//记录满足条件的阶梯个数for(i=1;i<1000;i++){if(i%2==1&&i%3==2&&i%4==3&&i%5==4&&i%6==......
  • 2.7 爱因斯坦的数学题
    第一部曲:思路:通过枚举每个数,在一到n范围内循环,如果满足条件就记录下来,然后输出,循环结束之后输出个数。第二部曲:  第三部曲:while(scanf("%d",&n)!=EOF)//处理到文件尾 { intsum=0; for(x=1;x<=n;x++) { if(x%7==0)//判断是否满足条件 { if(x%6==5) { if(x%5=......
  • 2.10马克思手稿中的纯数学题
    1.问题描述马克思手稿中有一道趣味数学问题:有30个人,其中有男人、女人和小孩,他们在同一家饭馆吃饭,总共花了50先令。已知每个男人吃饭需要花3先令,每个女人吃饭需要花2先令,每个小孩吃饭需要花1先令,请编程求出男人、女人和小孩各有几人。2.#include<stdio.h>intmain(){ intx,y,z; ......
  • 爱因斯坦的数学题
    1.问题描述爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最后剩一阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。只有每次跨7阶,最后才正好一阶不剩。请问在1~N内,有多少个数能满足?2.问题分析根据题意,用变量x表示阶梯数,则阶梯数x应该满......
  • 2.7 爱因斯坦的数学题
    #include<stdio.h>intmain(intt,a[5];/*数组a存放分解后的5个数字*/longintk,i;/*以95860为初值,循环试探*/for(i=95860;;i++)/*从高到低分解当前i中保存的五位数,并顺次存放在数组元素a[01~a[4]中*/for(t-0,k=100000;k>-10;t++)a[t]=(i8k)/(k/10);/*保存分解后的数......
  • 爱因斯坦的数学题
    #define_CRT_SECURE_NO_WARNINGS#include<stdio.h>intmain(){ intN,sum,i;/* while(scanf("%d",&N)!=EOF)*/ while(scanf("%d",&N)!=0) //输入N值,若N不是文件结束符则执行循环体 { sum=0; printf("在1-N中有:"); for(......
  • 马克思手稿中的数学题
    一、问题描述   马克思手稿中有这样一道趣味数学题:有30个人,其中有男人,女人,小孩,他们在同一家饭店吃饭,总共花了50先令,已知每个男人吃饭需要花3先令,每个女人吃饭需要花2先令,每个小孩吃饭需要花1先令,请编程求出男人、女人和小孩各有几人。二、设计思路    三次循环就可以解......
  • 2.10马克思手稿的数学题
    1.题目描述:有三十个人,其中有男人女人和小孩,他们在同一家饭馆吃饭,总共花了50先令。已知男人吃饭需要3先令,女人吃饭需要2先令,小孩吃饭需要花1先令,求有多少个男人女人小孩;源代码:#include<iostream>usingnamespacestd;intmain(){ for(inti=0;i<17;i++) { for(intj=......
  • day 20 马克思手稿中的数学题
     1.有男人,女人,小孩分别为X,Y,Z;2.满足X+Y+Z=30;3*X+2*Y+Z=50;3.循环遍历得出解 #include<iostream>usingnamespacestd;intmain(){printf("男人女人小孩\n");for(intx=0;x<=10;x++){for(inty=0;y<=20;y++){intz=30-x-y;if(3*x+2*y+z=......
  • 马克思手稿中的数学题
    自然语言解决问题:该题还是比较简单的,将男人、女人、小孩都定义后,只需要将他们轮流循环起来,将满足条件(三者之和为30,花费为50)时人们的数量输出便可以了流程图: 具体代码:#include<stdio.h>intmain(){ inta,b,c; for(a=0;a<=16;a++){ for(b=0;b<=15;b++){ for(c=0;c<=30;c+......