做暧在线网站,建立的英文单词,三明网站设计,网站标题可以修改吗目录 A#xff1a;三角回文数
B#xff1a;数数
C#xff1a;数组切分
D#xff1a;倍数问题 一星陨落#xff0c;黯淡不了星空灿烂#xff1b; 一花凋零#xff0c;荒芜不了整个春天。 如果命运是世界上最烂的编剧#xff0c; 你就要争取做人生最好的演员。 即使生…目录 A三角回文数
B数数
C数组切分
D倍数问题 一星陨落黯淡不了星空灿烂 一花凋零荒芜不了整个春天。 如果命运是世界上最烂的编剧 你就要争取做人生最好的演员。 即使生活在阴沟里依然有仰望星空的权利。 A三角回文数 因为题目以及给定12...36366066所以在遍历的时候可以从363开始因为不知道这个数在多少出现所以可以不定结果那么循环代码如下 for(int i363;;i) 接下来我们需要判定求和结果1i*i/220220514,且该值为回文数那么代码如下
package 蓝桥冲刺31天A.第七天;import java.io.*;/*** ClassName 三角回文数* Description TODO* Author 小怂很怂* Date 2023/3/10 10:45* Version 1.0**/
public class 三角回文数 {static BufferedReader br new BufferedReader(new InputStreamReader(System.in));static StreamTokenizer st new StreamTokenizer(br);static PrintWriter pw new PrintWriter(new OutputStreamWriter(System.out));public static void main(String[] args) throws Exception {for(int i363;;i){int ki*(i1)/2;if (k20220514pd(k)){pw.println(k);pw.flush();return;}}}public static boolean pd(int k){String ssk;int jss.length()-1;for (int i0;ij;i){//判定是否是回文数if (ss.charAt(i)!ss.charAt(j)) return false;j--;}return true;}public static int nextInt() throws Exception {//int型st.nextToken();return (int) st.nval;}public static long nextLong() throws Exception {//long型st.nextToken();return (long) st.nval;}
}B数数 通过遍历每一个数去求结果建议电脑跑完后直接提交结果会超时
package 蓝桥冲刺31天A.第七天;import java.io.*;/*** ClassName 数数* Description TODO* Author 小怂很怂* Date 2023/3/10 10:54* Version 1.0**/
public class 数数 {static BufferedReader br new BufferedReader(new InputStreamReader(System.in));static StreamTokenizer st new StreamTokenizer(br);static PrintWriter pw new PrintWriter(new OutputStreamWriter(System.out));public static void main(String[] args) throws Exception {int count0;for (int i2333333;i23333333;i){//遍历int ti,s0;for (int j2;j*jt;j){//判定这个数分解情况if (t%j0){t/j;s;j--;}}if (t!1) s;//t1的情况下t一定为质数if (s12) count;//满足s12则计数}pw.println(count);pw.flush();//必须加}public static int nextInt() throws Exception {//int型st.nextToken();return (int) st.nval;}public static long nextLong() throws Exception {//long型st.nextToken();return (long) st.nval;}
}C数组切分 我们可以将每一个新放入的数产生后的连续区间看成一个整体比如{3}{32}{132}这些都是一个整体那么在计数的时候就是去除这一个整体后前面数的总和例如 或许有一点点绕但是仔细想一下
package 蓝桥冲刺31天A.第七天;import java.io.*;/*** ClassName 数组切分* Description TODO* Author 小怂很怂* Date 2023/3/10 11:48* Version 1.0**/
public class 数组切分 {static BufferedReader br new BufferedReader(new InputStreamReader(System.in));static StreamTokenizer st new StreamTokenizer(br);static PrintWriter pw new PrintWriter(new OutputStreamWriter(System.out));public static void main(String[] args) throws Exception {int nnextInt();int []arrnew int[n1];for (int i1;in;i) arr[i]nextInt();int []dpnew int[n1];dp[0]1;for (int i1;in;i){int minn1;int max0;for (int ji;j1;j--){maxMath.max(max,arr[j]);minMath.min(min,arr[j]);if (max-mini-j) dp[i](dp[i]dp[j-1])%1000000007;}}pw.println(dp[n]);pw.flush();//必须加}public static int nextInt() throws Exception {//int型st.nextToken();return (int) st.nval;}public static long nextLong() throws Exception {//long型st.nextToken();return (long) st.nval;}
}D倍数问题 看着像三数之和那能不能像三数之和一样做答案是可以的
我们先进行一次排序因为优先大的数嘛因为n100000,所以如果采用O(n²)一定会超时更何况还需要找第三个数那么我们怎么做题目给定了一个值K且K1000我们可以通过取模的方式找到最多3*k个数我们对于每一种模值只保留3个最大的数然后遍历循环就成了O(3*k)³这当然还是会超时的如果我们在判定时直接结束某一次循环呢因为数据是按照排序结果下来的如果出现可选的最大的三个数已经求得的最大值我们是不是就可以不用再去进行计算了因为再计算即使满足k的倍数值也比最大值小
package 蓝桥冲刺31天A.第七天;import java.io.*;
import java.lang.reflect.Array;
import java.util.Arrays;/*** ClassName 倍数问题* Description TODO* Author 小怂很怂* Date 2023/3/10 11:21* Version 1.0**/
public class 倍数问题 {static BufferedReader br new BufferedReader(new InputStreamReader(System.in));static StreamTokenizer st new StreamTokenizer(br);static PrintWriter pw new PrintWriter(new OutputStreamWriter(System.out));public static void main(String[] args) throws Exception {int nnextInt();int knextInt();int []arrnew int[n];int []brrnew int[k*3];//存放%k结果的最大的三个数int []crrnew int[k];//%k的数的个数只需要三个for (int i0;in;i) arr[i]nextInt();Arrays.sort(arr);int s0;for (int in-1;i0;i--){//从中选出3*k个数if (crr[arr[i]%k]2){//判断该模值是否到达3crr[arr[i]%k];brr[s]arr[i];//存入s;}if (s3*k)break;//选完3*k个数就可以直接跳出了没必要多进行计算}int count0;for (int i0;is-2;i){if (brr[i]*3count) break;//最大的情况比已知结果小跳出for (int ji1;js-1;j){if (brr[i]brr[j]*2count) break;//最大的情况比已知结果小跳出for (int lj1;ls;l){if ((brr[i]brr[j]brr[l])%k0){countMath.max(count,brr[i]brr[j]brr[l]);break;}if (brr[i]brr[j]brr[l]count) break;//最大的情况比已知结果小跳出}}}pw.println(count);pw.flush();//必须加}public static int nextInt() throws Exception {//int型st.nextToken();return (int) st.nval;}public static long nextLong() throws Exception {//long型st.nextToken();return (long) st.nval;}
}