大家好,我是想要慢慢变得优秀的向阳同学,断更了整整一年,又开始恢复CSDN更新,从今天开始更新备战蓝桥30天系列,一共30天,如果对你有帮助或者正在备战蓝桥杯的小伙伴可以支持一下哦!~不能说肯定是干货,但会让你有所收获!
我们总是在生活扮演各种角色,却唯独很少扮演自己
可能喜欢过很多人才会明白的一个道理,就是遇到真正喜欢和真正合适的人,当朋友或许才更加稳妥,这是激素消散后理性的大脑告诉过我的答案。也不是说怂什么的,就是这样做的更稳妥,因为这是我之前勇敢过,尝试过后得到的一些感悟。
蓝桥杯还剩最后29天,肯定还要继续更新下去,但最近刷别的题发现自己基础不牢,想要再系统地复习一下自己之前的笔记,加上马上又六级,需要做的事情有点多,这些题目更新会只有两道了,而且题也不难都,希望大家谅解,以后会补上的,就是这一星期左右会减少的点量,之后有空立马补上来(在蓝桥杯生赛前)。
三角回文数 - 蓝桥云课 (lanqiao.cn)
思路:这道题暴力完全没问题,但我感觉做题要学到一些知识,我就不讲暴力了。看题很敏感可以看出来其实三角数就是一个等差数列!注意刷了这么多道题,蓝桥杯独爱等差数列,要敏感敏感敏感!!!用等差数列求和公式来判断是不是三角数就可以了,而且回文数本身就比较稀有,我们直接可以先判断三角数,满足条件再去看这个三角数是不是回文就可以了。这里我们缩减一下范围(不缩减也可以,但难题肯定要缩减)因为告诉我们要大于
20220514
,所以我们可以用等差公式求和得到n的一个近似值为6539这个值刚好是第一个大于的值
20220514
,不信你可以计算器算一算好了很快,这样每次我们求出一个三角数,然后如果满足回文直接输出就可以了。
public static void main(String[] args) {
for (int i = 6359; ; i++) {
int tmp = (i + 1) * i / 2;
if (check(tmp)){
System.out.println(tmp);
break;
}
}
}
static boolean check(int x) {
char[] s = (x + "").toCharArray();
int r = s.length - 1;
int l = 0;
while (l < r) {
if (s[l] != s[r]) return false;
l++;
r--;
}
return true;
}
数数 - 蓝桥云课 (lanqiao.cn)
思路:又是一道蓝桥杯爱考的质数问题,这里用到的就是唯一分解定理来算就好了,算法的时间复杂度是O(n*根号n)
public static void main(String[] args) {
int ans = 0;
for (int i = 2333333; i <= 23333333; i++) {
int tmp = i;
int x = 0;
for (int j = 2; j <= tmp/j; j++) {
//得到i的最小质因子
if(tmp % j == 0){
//不断的剔除最小质因子数j,直到不能被整除
while(tmp % j == 0){
tmp/=j;
//每剔除一次就可以让数i的质因子+1
x++;
}
}
}
//数论中的一个结论:任何一个数,它的质因数大于根号n有且只有一个,正常来说处理到这块的时候,n应该是=1,
//如果不等于1,说明此时n的值大于根号n无法被处理掉,根据结论可知这个数只有一个,所以我们ans++就好了
if(tmp > 1) x++;
if(x == 12) ans++;
}
System.out.println(ans);
}
文章评论