解题:通过观察发现,外围四边都需要剪一次,而中间每行需要总行号(n)-1。
其余的一行的列需要剪 总列(m)-1, 总共n行,所以 得出公式(4 + (n-1) + (m-1)*n) 。
public class Main {
public static void main(String[] args) {
int n = 20;
int m = 22;
int res = (4 + (n-1) + (m-1)*n);
System.out.println(res);
}
}
解法:先把n分解出有多少个周,一周又能做多少题。 n分出来后还剩下多少天数,减去对应天数做的题, 把所有周 和 能减去的天数 求和 。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
long a = s.nextLong();
long b = s.nextLong();
long n = s.nextLong();
long week = a*5 + b*2;
long weekCnt = n / week;
long res = weekCnt * 7;
n %= week;
for(int i = 1; i <= 7; i++) {
if(i <= 5 && n > 0) {
n -= a;
res++;
}else if(i > 5 && n > 0) {
n -= b;
res++;
}
}
System.out.println(res);
}
}
解法:主要观察来回生长的特点,就会发现。只有当回到自己的时候高度才会变0,其他时间都是在生长,那么这个其他时间就是往返的时间。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
for(int i = 1; i <= n; i++) {
System.out.println(Math.max((i-1)*2, (n-i)*2));
}
}
}
解法:某一区间是k的倍数,说明该区间的余数为0,那么使用前缀和求[1,n]的和 同时 模 k ,看看哪些余数相同,余数相同表示这两个区间可以相减得去 余数 为0 ,也就是可以被k 整除
import java.util.HashMap;
import java.util.Scanner;
public class Main {
static int N = (int)1e5 + 10;
static long[] a = new long[N];
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
int k = s.nextInt();
for(int i = 1; i <= n; i++) {
a[i] = s.nextInt();
a[i] += a[i-1];
}
long res = 0;
HashMap mp = new HashMap<>();
mp.put(0, 1);
for(int i = 1; i <= n; i++) {
int x = (int)(a[i] % k);
res += mp.getOrDefault(x, 0);
mp.merge(x, 1, Integer::sum);
}
System.out.println(res);
}
}
k倍区间加强版
跑路-----------------------------有缘再见---------------------------------------------------------
我知道你最近很累,是那种看不见的、身体上和精神上的疲惫感,但是请你一定要坚持下去。就算无人问津也好,技不如人也好,千万别让烦躁和焦虑毁了你的热情和定力。别贪心,我们不可能什么都有,也别灰心,我们不可能什么都没有。
那些低落、疲惫、困惑的时刻,也许是要教会你:不要沮丧,不必惊慌,哪怕一路跌跌撞撞,也偶尔遍体鳞伤,可只要向着心中的方向,总有一天,我会站在最亮的地方,活成自己曾经渴望的模样。
欢迎提出问题~~~~~~~~~~~虽然我不会回答你捏