zoukankan      html  css  js  c++  java
  • 青蛙跳孔解题

    题目来自网上,如图:

    首先,建立一个模型。

    如图:

    设一圈共有n个孔,每个孔的标号,依次为:0,1,2,。。。n-1。在图中为内圈。

    当青蛙跳完第一圈,会循环进入第二圈,即从n-1孔,又回到了0,再1,2,3。。。

    为了便于分析,我们假设青蛙跳过n-1孔之后,进入第n个孔,然后再n+1,n+2,。。。即进入了第二圈。

    不难发现,第n孔,即第0孔,第n+1孔,即第1孔。。。

    图中只画出了两圈,我们可以想像,青蛙跳到第二圈的最后一个位置,即第2*n-1孔之后,进入第2*n孔,开始了第三圈。

    第三圈,从2*n孔,到3*n-1孔,其实就是第0孔,到第n-1孔。

    有了这个模型之后,分析就相当方便了。青蛙从0开始起跳。如果隔k孔跳,那么就从0孔,跳到k+1孔。我们可以发挥一下想像,假如隔1孔跳,在数列:

    0,1,2,3,4,5,6,7,8,。。。

    中,按整数顺序数下去时,凡是2(即k+1)的倍数,都是青蛙的着地点:

    0,2,4,6,8,。。。

    当k为其他数时,道理都是一样的。

    设数为x。

    题目给出了四个条件,逐一分析:

    一、x的百位数是8

    这个容易理解,不说。


    二、x是9的倍数

    因为隔8孔跳一步,会回到A孔(即第x孔),所以x是9的倍数。

    在百位数为8的数中,凡是9的倍数的数有:

    801,810,819,828,837,846,855,864,873,882,891。

    var
      i:longint;
    begin
      for i:=800 to 899 do begin
        if(i mod 9=0) then
          writeln(i);
      end;
    end.
    pascal code

    三、x+2是7的倍数

    因为每隔6孔跳一步,跳到了B孔,B孔,即第x+2孔(根据前面的模型得到)。

    所以x+2,为7的倍数。从前面得到的11个数中,进行筛选,剩下两个数符合要求:

    810、873。

    var
      i:longint;
    begin
      for i:=800 to 899 do begin
        if(i mod 9=0) and ((i+2) mod 7=0) then
          writeln(i);
      end;
    end.
    pascal code


    四、2*x+4是8的倍数

    因为每隔7孔跳一步,两圈后,到C孔。根据模型,C孔,即第 2*x+4 孔。

    所以,2*x+4,为8的倍数。

    在前面得到的两个数中,只有810符合要求。

    所以,答案是810。

    var
      i:longint;
    begin
      for i:=800 to 899 do begin
        if(i mod 9=0) and ((i+2) mod 7=0) and ((2*i+4) mod 8=0) then
          writeln(i);
      end;
    end.
    pascal code

    //end.--------------------------------------------------------------------------------------------

  • 相关阅读:
    IDEA、Eclipse快捷键对比
    linux常见命令
    拷贝本地文件到远程服务器的批处理脚本
    关系型数据库的超键、候选键、主键
    JAVA运算符总结
    JAVA原码反码补码
    JPA查询语句(转载)
    Spring Data JPA初使用(转载)
    android学习————项目导入常见错误整理(转载)
    Spring 系列: Spring 框架简介
  • 原文地址:https://www.cnblogs.com/xin-le/p/3739479.html
Copyright © 2011-2022 走看看