本题来源于蓝桥杯的一道真题,附上此题链接:
https://www.dotcpp.com/oj/problem2689.html
按题目的意思不是,输入一个n就生成一次自然数列嘛,然后我的想法就是用数学方法用数学方法找规律,
以下是我的代码部分:
package ___2022年省赛Java大学A组;
import java.util.Scanner;
public class 最优清零方案__数学推导 {
private static int n,k ;
private static int arr[];
private static int ans;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
k = sc.nextInt();
int count1 = 0;
if(k==1) {
for(int i=1;i<=n;i++) {
count1+=i;
}
System.out.println(count1);
return;
}
if(k==2) {
int first = n-k+1;
int second = n-1;
System.out.println(first + second);
}else {
int first = n-k+1;
int second = 0;
for(int i=1;i
###但是实际通过只有5%
##我认为规律如下:
k=1时,n个数直接for叠加得到,每次减一
k=2或更大时,
用n-k+1达到剩余属于少于k个,
然后剩下k-1个,数值为1到k-1。
#这种思路有什么问题嘛?呜呜呜呜,最好能举个反例