尼克和格莱尔玩报数游戏,尼克按1~x报数,格莱尔按1~y报数。两人同时开始,并以同样的速度报数,当两人都报了m个数时,统计出两人同时报相同数的次数。

分析:在解决这个问题前,我们首先要知道函数的参数是什么,首先就是要明确两人所报数的总个数m,这个是要做为我们初次循环的先决条件,知道了m,我们就知道了这个算法的时间复杂度了。其次我们还要明确尼克和格莱尔所报次数的上线x、y,这两个变量是决定了两人报数相同次数的重要标志,知道了x、y我们就知道了算法循环一次所重复的数字个数。

所以除去上述的三个参数,我们还需要声明三个变量,c、d、num。c作为尼克的所报数字,d作为格莱尔所报数字,num作为所报相同数字的个数。当尼克和格莱尔所报数字相同时,也就是c = d时,num 加一。同时,当c 等于尼克所报数字时,c归零,同理d也是如此。

python:

def jishu(n, nk,glr):
  c = 0
  d = 0
  sum = 0
  i = 0
  while i < n:
    c = c + 1
    d = d + 1
    i = i + 1
    if c == d :
      sum = sum+1
    if c == nk:
      c=0
    if d == glr:
      d=0
  return sum
n = int(input("请输入总数:"))
nk = int(input("请输入尼克1~x报数的x:"))
glr = int(input("请输入格莱尔1~y报数的y:"))
print("同时报相同数的次数是",jishu(n,nk,glr))

java:

import java.util.Scanner;
//报数问题
public class baoShuWenTi {
    public static int baoshu(int n, int nk, int glr){
        int c = 0,d = 0,num = 0;
        for (int i = 0; i < n; i++) {
            c++;d++;
            if (c == d) num++;
            if (c==nk)c=0;
            if (d==glr)d=0;
        }
        return num;
    }
    public static void main(String[] args) {
      Scanner scanner = new Scanner(System.in);
      System.out.println("请输入所报总数:");
      int n = scanner.nextInt();
        System.out.println("请输入尼克报数上限:");
        int x = scanner.nextInt();
        System.out.println("请输入格莱尔报数上限:");
        int y = scanner.nextInt();
        int num = baoshu(n,x,y);
        System.out.println("尼克和格莱尔所报相同数为:"+num);
    }
​
}

js:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <form action="" method="" style="width: 300px;height: 300px; margin: auto;display: flex;flex-direction: column;justify-content: space-around;">     
​
<div id="" style="width: 100%;;display: flex;justify-content: space-between;">
            所报总数:<input type="text" name="" id="ip1" />
        </div>
        <div id="" style="width: 100%;;display: flex;justify-content:  space-between;">
            尼克按1~x报数:<input type="text" name="" id="ip2" />
        </div>
        <div id="" style="width: 100%;;display: flex;justify-content:  space-between;">
            格莱尔按1~y报数:<input type="text" name="" id="ip3" />
        </div>
        <h2 id="h2"></h2>
        <button type="button" style="width: 100%;" id="btn">确定</button>
        
    </form>
</body>
<script type="text/javascript">
    let c = 0,d = 0,num = 0;
    let n = document.getElementById("ip1")//获取所报总数input节点
    let nk = document.getElementById("ip2")//获取尼克按1~x报数input节点
    let glr = document.getElementById("ip3")//获取格莱尔按1~y报数input节点
    let h2 = document.getElementById("h2")
    let btn = document.getElementById("btn")
    btn.onclick=function(){
        let str = baoshu(n.value,nk.value,glr.value)//注意:获取节点的value值一定不能直接在获取节点的同时链式操作。!!!!
        console.log(str)
        h2.innerHTML = "两人同时报相同数的次数为:"+str
    }
    function baoshu(n,nk,glr){
        for (var i = 0; i < n; i++) {
            c++,d++;
            if(c == d)num++;
            if(c == nk)c = 0;
            if(d == glr)d = 0;
        }
         return num;
    }
</script>

c++:

#include <iostream>
using namespace std;
int baoshu(int n ,int nk,int glr){
    int c = 0,d = 0, sum = 0;
    for(int i = 0;i< n ;i++){
        c++;d++;
        if(c == d)sum++;
        if(c == nk) c=0;
        if(d == glr)d=0;
    }
    return sum;
}
int main(){
    int n;
    cout<<"请输入报数总数:"<<endl; 
    cin>>n;
    int nk;
    cout<<"请输入尼克报数上限:"<<endl; 
    cin>>nk;
    int glr;
    cout<<"请输入格莱尔报数上限:"<<endl; 
    cin>>glr;
    cout<<"尼克和格莱尔所报相同数为:"<< baoshu(n,nk,glr);
    
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值