题目描述
某体校在训练间隙,老师为了强化学生们的体能又为了公平对待,组织了一次脑力加体力双训练的游戏。游戏的规则是这样的:老师让同学们一共 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;
}
}
}
}