赛码---做俯卧撑(Java)

来源:互联网 发布:韩国导演排名知乎 编辑:程序博客网 时间:2024/03/29 00:09

题目描述
某体校在训练间隙,老师为了强化学生们的体能又为了公平对待,组织了一次脑力加体力双训练的游戏。游戏的规则是这样的:老师让同学们一共 n 个人围坐在一圈。第一个人首先说出数字1。接下来,坐在他左手边的同学要说下一个数字2。再下面的一个同学要从上一个同学说的数字往下数两个数说出来,也就是说4。再下一个同学要往下数三个数,说7。依次类推。如果有一位同学说错,那么他将做与当轮游戏中第一位同学所有说出的数字的总和(即第一位同学说了T个数字的总和)相同的俯卧撑数。
为了使数字不至于太大,老师规定,当在心中数到 k-1 时,下一个数字从0开始数。例如,当k=13时,同学们报出的前几个数依次为:
  1, 2, 4, 7, 11, 3, 9, 3, 11, 7。
游戏进行了一会儿,第 m 个同学在第 T 次说数的时候说错了,那么他将要做多少个俯卧撑?
输入
输入的第一行包含三个整数 n,k,T,其中 n 和 k 的意义如上面所述, T 表示到目前为止第一位同学一共说出的数字个数。
样例输入
3 13 3
输出
输出一行,包含一个整数,表示该同学做的俯卧撑数。
样例输出
17

import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        int n = scanner.nextInt();        int k = scanner.nextInt();        int T = scanner.nextInt();        scanner.close();        int sum = 0;        boolean end = false;        while(true){            for(int j = 0, num = 1, count = 0; ; j++){                if(j % n == 0){                    count++;                    sum += num;                 }                if(count == T){                    System.out.println(sum);                    end = true;                    break;                }                num = (num + j + 1) % k;            }            if(end){                                break;            }        }    }}
0 0
原创粉丝点击