这题我做了半天也没看出来具体考的知识点是什么,综合运用也没发现具体运用什么。我自己是用for循环暴力算出来的,但是超限时80%多,看了下其他老哥的解析,他们用公式法可以正常通过。但是我有个问题就是,他们的算出来的规律都是拼出来的,看不人任何规律可言,比赛的时候感觉用等差公式去做的话有点迷哇。
这里就先记录下我的暴力算法,等后面有能力了再来看一遍这个题吧
package _12_26_test;
import java.util.Scanner;
public class eleven {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();// 人数
int k = scanner.nextInt();// 心中数的数
int T = scanner.nextInt();// 栋栋轮到的次数
int re = k - 1;
int count = 0;// 记录栋栋轮到的次数
int dif = 0;// 记录两个数之间相差的大小
int num = 1;// 每个人数的数
int all = 0;// 栋栋数过的数之和
// 根据输入的n,进行循环数数
for (int i = 0; i < n * T; i++) {
// 每个人心里数的数
for (int j = 0; j < dif; j++) {
num++;
// 如果数到的数等于k-1,从0开始数
if (num == re) {
num = -1;
}
}
// 每次数相差的大小加1
dif++;
// 栋栋轮到的次数
if (i % n == 0) {
count++;
all = all + num;
}
if (count == n) {
break;
}
}
System.out.println(all);
}
}