CSP-J复赛模拟赛1 王晨旭补题 2025.10.1
一,回归序语
各位老朋友们,国庆的我又复活啦,一年一度的集训再次开始,熟悉的补题报告也再次回归,今年山东首次开始双报,主包也是以强大的初赛能力双过线,但去年的J组没拿省一,为了补足缺憾,今年也是再冲一次J,熟悉我的同学们知道今天也是主包的生日(祝自己生日快乐),那么我们闲话少说,直接上今天模拟赛的补题报告
一,前言
是过了一年的水平提高了还是今年的题真的很水,说是水平提高了吧,感觉今年第四个做着跟去年第二个一样,说是今年的题水吧,我还能打个班级Rank4(无失误可Rank1),真是非常奇妙的感觉,从23年小学组随便打班级前列(补题报告在前面),到现在的不自信,到底发生什么了呢(抛开心理学就是题刷少了)
二,成绩
1,数字降级【80/100】每个没A的第一题后都有一个血的教训
2,分组【100/100】 第二题宝宝你好乘啊
3,抢夺地盘【20/100】孤注一掷但抢不过(到底在燃什么)
4,闯关【60/100】第四题你不乘哦
总分【260/400】明天不要掉啊啊啊(今日班级R4)
把所有细节做好(细节后文说)可310分(黑子说话)
三,题一
p1:又是编程生涯污点,long long/int惨案!!!
p2:先整原题
数字每一次降级都表示将一个数字除以一次它的任意一个因子。请问最少几次操作可以将一个数字 ,降级成一个质数?
例如:数字 n=8,第一种方案为选择8的因子2,然后用8除以2,那么n=4,继续选择4的因子2,重复操作;第二种方案为选择8的因子4,将8除以4,得到 n=2。那么选择次数最少操作,将次数输出
花里胡哨,一眼分解质因数?唯一分解定理?欧拉筛?都不用
p3:赛上/正解思路
输出仅有两种情况
(1)该数为质数,则无需降级,直接输出0
(2)该数为合数,则仅需除以它本身除以它任意一个质因子的商(降级一次),化简后式子就是它的任意一个质因子,合数必有质因子,输出1
这样就可以将问题转换为判断素数了
p4:失误
在数据下:
在数据下:
but,数据范围明明注意到但脑子自动将其删除了,于是
#include<iostream>
using namespace std;
int prime(int n){for(int i=2;i*i<=n;i++){//我来阴你了if(n%i==0){return 0;}}return 1;
}
in