前言
这是我们学校今年新生全家桶里的一道诈骗题,当时想了三四天,也搜不到答案,AI出来的看不懂。知道答案之后,真是破大防了,特此写一篇CSDN来吐槽一下。
一、题目
二、我的心路历程
(一)遍历质数
这道题与质数相关,又因为刚看过翁凯老师讲判断一个数是否为质数的视频,所以我想到的第一个方法就是遍历质数
。就这样顺着这个思路敲了三四十行代码,快敲完了,才发现“分成若干部分”中的“若干”不知道怎么处理。后来才知道就算处理了,也肯定会TL(因为当时刚开始学,只会i=2;i<n;i++这种暴力试除法
,还不会欧拉筛
,甚至连i*i<n或sqrt(n)都不会)。
(二)并查集
这个是我AI出来的方法,这个算法当时还没学,学长说我们应该寒假的时候才学,我也不会啊,代码都看不懂,哈哈哈。
三、题解:哥德巴赫猜想
结合这两条,易知任意大于3的数都能分成若干个质数的和
,代码也嘎嘎简单:
#include <bits/stdc++.h>
using namespace std;
#define endl "\n"
int main() {
ios::sync_with_stdio(false);
cout.tie(0);
cin.tie(0);
int m;
cin >> m;
if (m > 3) {
cout << "YES";
} else {
cout << "NO";
}
return 0;
}
// ⠀⠀⠀ ⠀⢸⣿⣿⣿⠀⣼⣿⣿⣦⡀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠀⠀⠀ ⠀⢸⣿⣿⡟⢰⣿⣿⣿⠟⠁
// ⠀⠀⠀⠀⠀⠀⠀⢰⣿⠿⢿⣦⣀⠀⠘⠛⠛⠃⠸⠿⠟⣫⣴⣶⣾⡆
// ⠀⠀⠀⠀⠀⠀⠀⠸⣿⡀⠀⠉⢿⣦⡀⠀⠀⠀⠀⠀⠀ ⠛⠿⠿⣿⠃
// ⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣦⠀⠀⠹⣿⣶⡾⠛⠛⢷⣦⣄⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣧⠀⠀⠈⠉⣀⡀⠀ ⠀⠙⢿⡇
// ⠀⠀⠀⠀⠀⠀⢀⣠⣴⡿⠟⠋⠀⠀⢠⣾⠟⠃⠀⠀⠀⢸⣿⡆
// ⠀⠀⠀⢀⣠⣶⡿⠛⠉⠀⠀⠀⠀⠀⣾⡇⠀⠀⠀⠀⠀⢸⣿⠇
// ⢀⣠⣾⠿⠛⠁⠀⠀⠀⠀⠀⠀⠀⢀⣼⣧⣀⠀⠀⠀⢀⣼⠇
// ⠈⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡿⠋⠙⠛⠛⠛⠛⠛⠁
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣾⡿⠋⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⢾⠿⠋
就这样敲了三四十行没过,敲了10行就AC
了。我只是个蒟蒻,哪听说过什么哥德巴赫猜想,还不给点提示,真服了这些老六,防住了电信诈骗,没防住学长的诈骗。这道题我一辈子都不会忘,呜呜呜~
四、总结
所以最后,我想说的是写题之前,先看清数据范围
,算时间复杂度
,根据时间复杂度去想你的代码咋写,是直接暴力
?还是要用前缀和数组预处理
?或者要用二分
去找?筛质数的时候是暴力跑
还是直接筛
?实现每个部分功能的代码应该怎么敲?这些都是在敲代码之前就应该要知道的东西,别快敲完了才发现实现某个部分功能的代码不会敲,或者会TL
。
结语
我只是一个A C M预习时长两年半的蒟蒻练习生,喜欢暴力,打表,面向样例编程,请各位键盘侠手下留情。