打卡打卡打卡——今天有认真做题

归辞_备赛版 2023-03-08 21:36:06

第一题 数的分解

思路,三个数从小到大进行分解

我们要预估第一个数肯定小于671,第二个数肯定要小于1009,但其实这个范围大一点点也没关系

然后最后的一个数用来兜底,如果最后一个数反而比第二个小,呢就舍弃

package month_training;

import java.util.Arrays;

public class 数的分解 {
	static int[] a = new int[2020];
	static int[][] b= new int[10000000][3];
	public static void main(String[] args) {
		for(int i=1;i<=2019;i++) {
			a[i] = i;
		}
		int count = 0;
		for(int i=1;i<=1000;i++) {
			for(int j = i+1;j<=1019;j++) {
				int k = 2019 - i - j;
				if(k>j&&!(String.valueOf(i)+String.valueOf(j)+String.valueOf(k)).contains("2")&&!(String.valueOf(i)+String.valueOf(j)+String.valueOf(k)).contains("4")) {
					//b[count][0] = i;
					//b[count][1] = j;
					//b[count][2] = 2019-i-j;
					count++;
				}
				
				
			}
		}
		System.out.print(count);
	}

}

第二题 猜生日

这题但凡正常人应该都会从1900开始搜,主要是数字转换,感觉尽量少用字符串,还是直接乘以十方便

package month_training;

public class 猜年龄 {
	public static void main(String[] args) {
		int tmp = 600;
		int ans = 0;
		for(int i = 1900;i<=2010;i++) {
			for(int j = 1;j<=30;j++) {
				//System.out.print(1);
				ans = i*10000 + tmp +j;
				if(ans%2012 == 0 && ans%3 == 0 && ans%12 == 0)
				{
					System.out.println(ans);
				}
				//System.out.print(ans);
			}
		}
	}

}

第三题 成绩统计

这题主要是四舍五入这玩意很讨厌,要是我实在没想到的话,我就多乘一位,然后取余判断

package month_training;

import java.util.Scanner;

public class 成绩分析 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int a= 0;
		int b = 0;
		int c = 0;
		for(int i=0;i<n;i++) {
			int tmp = sc.nextInt();
			if(tmp >=60) {
				a++;
				System.out.println(1);
			}
			if(tmp >= 85) {
				b++;
				System.out.println(-1);
			}
		}
		System.out.println(Math.round(a*100/(n*1.0))+"%");
		System.out.println(Math.round(b*100/(n*1.0))+"%");
	}

}

第四题 最大和

dp问题,然后涉及到最小质因子,其实我现在看不太懂质因子为啥那么算了....但是孩子会背

然后就是dp,今天没敲快读,然后超时了俩。

 

import java.util.Arrays;
import java.util.Scanner;

public class 最大和 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		//init(n);
		int[] val = new int[n+10];
		int[] dp = new int[n+10];
		for(int i=0;i<n;i++) {
			val[i+1] = sc.nextInt();
			dp[i+1] = val[i+1];
			//System.out.print(get(i));
		}
		for(int i=1;i<=n;i++) {
			dp[i] = Integer.MIN_VALUE;
		}
		dp[1] = val[1];
		for(int i=1;i<=n;i++) {
			for(int j =1;j<=get(n-i);j++) {
				dp[i+j] = Math.max(dp[i]+val[i+j], dp[i+j]);
			}
		}
		System.out.println(dp[n]);
		
	
		
	}

	static int get(int n) {
		int ans = 0;
		int a = n;
		if(a == 1) {
			return 1;
		}
		else {
			for(int i = 2 ;i<=a/i;i++) {
				if(a%i == 0) {
					return i;
				}
			}
		}
		return n;
	}
}

 

...全文
17 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

50,779

社区成员

发帖
与我相关
我的任务
社区描述
和众多高校算法内卷分子,一起学习和交流算法那。浓郁的算法交流氛围,拒绝躺平,有效内卷。加入我们,私信我拉你入核心内卷群。
算法数据结构leetcode 个人社区
社区管理员
  • 执 梗
  • Dream-Y.ocean
  • ღCauchyོꦿ࿐
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

 刷题!

试试用AI创作助手写篇文章吧