枚举
本文最后更新于 21 天前,其中的信息可能已经有所发展或是发生改变。

质数判断条件

public static boolean isPrime(int n) {
    if (n < 2) return false;        // 小于2的不是质数
    if (n == 2) return true;         // 2是质数
    if (n % 2 == 0) return false;    // 偶数不是质数

    // 核心部分:检查奇数因子
    for (int i = 3; i * i <= n; i += 2) {
        if (n % i == 0) {            // 如果找到能整除的数
            return false;             // 不是质数
        }
    }

    return true;  // 没找到因子,是质数

}

P12154

数到2025会溢出,要使用long

P8657

String date = sc.nextLine();  // 1. 读取用户输入的整行字符串
String[] parts = date.split("/");  // 2. 用"/"分割字符串,得到数组
int a = Integer.parseInt(parts[0]);  // 3. 将第一个部分转为整数
int b = Integer.parseInt(parts[1]);  // 4. 将第二个部分转为整数
int c = Integer.parseInt(parts[2]);  // 5. 将第三个部分转为整数

这是把字符串给分割然后转换为数字的步骤

String date = sc.nextLine();
String shuzhu[] = date.splite("/");
int one_p = Integer.parseInt(shuzhu[0]);
int two_p = Integer.parseInt(shuzhu[1]);
int three_p = Integer.parseInt(shuzhu[2]);

p12323

思路:

因为202320232023这个数实在是太大了,而每当x5阶乘最后的结果就会加上一个0,而题目又说最后9位数非0,因此就是想要你算到44!,所以直接求到44!阶乘的累加就好了

P8651

这题代码好多,大概是挺多小方法穿起来的

思路:

检查日期合法性

  • 判断月,日的范围
    • 二月天数与闰年有关,因此使用leapyear判断
    • 之后创建数组存储月和日对应的日期,使用三元组判断,是闰年三元组就加1,不是就加0
    • 创建好映射后再判断是否大于所在月天数
static boolean isv(int year,int month,int day){

        if (month <1 || month >12){
            return false;
        }
        if (day <1 || day >31) return false;

        int day_M = {31,28+(isLeapyear(year)? 1:0),31,30,31,30,31,31,30,31,30,31};

        return day <= day_M[month -];
    }

去重树set

Set
<String> result = new TreeSet<>();

检查枚举可能性+匹配题意格式

如果格式符合时把结果输出到集合之中

  static boolean matchi(int year, int month, int day, int a, int b, int c){
        int yeartail = year %100;

        if (yeartail ==a && month == b && day == c){
            return true;
        }
        if (month == a && day == b && yeartail == c){
            return true;
        }
        if(day ==a && month ==b && yeartail == c){
            return true;
        }

        return false;
    }

P15430

等差公式性质:

k = 2j -i

假设有i,j,k三个数,由于j - i == k - j

所以推导得k = 2j -i

P12340

虽然位移了,但是对比一下第一行,每次位移加一,第一行是0的情况下,想要找到A的绝对索引就是(start – a)%7 == 2/5

也可以反复品鉴一下,因为至少这个的思路能看懂

B2074

同余定理

递归运算

阶乘的话,阶乘的核心代码是:

阶乘的核心递推关系就是:
**n! = (n-1)! × n**(当 n ≥ 1)

使用高精度实现时,是这样的:

import java.math.BigInteger;

public static BigInteger factorialBig(int n) {
    if (n < 0) {
        throw new IllegalArgumentException("n must be >= 0");
    }
    BigInteger result = BigInteger.ONE;
    for (int i = 2; i <= n; i++) {
        result = result.multiply(BigInteger.valueOf(i));
    }
    return result;
}

P9244

String str = "Hello";
char[] charArray = str.toCharArray();

字符串不需要有转数组遍历的想法

直接使用str.length()str.charAt()外头套上个for循环就好了

sc.next针对的是String,如果要使用char时需要再次用到At,格式如下:

char a = sc.next().charAt(0)

p11042

`java.util.Arraylist

list = new java.util.Arraylist();` 新建动态数组的方法 `list.add(s.cahrAt(i) – ‘0’);` char转int 类斐波那契的解题思路: 题干求10000000以内最大的,所以使用i–递减。 之后使用check函数查看是否满足条件,条件为: – 把long函数换成str函数,然后看str字串的长度 – 看是因为这个数列的和是看str字串的长度之和,比如这是一个139的数,字串长度为3,因此这个数列是前3项之和 – 边界判断:长度为1就是可以直接返回true了 – 使用list接受接下来不断增加增长的数列,直到n == sum – for循环的条件体现为,i= 数组长度- str字串的长度 回去看: P11004 不是纯暴力 P11042 迷思 学习 = 不断重复的过程,重复到一定度开始学习新的东西
感谢大家参观我的毛坯房。
暂无评论

发送评�? 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇