当前位置: 首页 > news >正文

【蓝桥杯】刷题

刷题网站
记录总结刷题过程中遇到的一些问题

1、最大公约数与最小公倍数

a,b=map(int,input().split())s=a*bwhile a%b:a,b=b,a%bprint(b,s//b)

2.迭代法求平方根(题号1021)

#include<stdio.h>
#include<math.h>
int main()
{double x1=1.0,x2;int a;scanf("%d",&a);do{x1=x2;x2=(x1+a/x1)/2;}while(fabs(x2-x1)>0.00001);printf("%.3lf",x1);return 0;
}

3、筛选N以内的素数(1022)

采用埃筛法筛选素数

思路是给定一个较大的bool数组,刚开始将其所有元素赋值为True,从2开始,那么2的倍数就一定不是素数,将对应的bool值重新赋值为0,依次,3的倍数也不是素数…

N=int(input())
isprime=[True]*10000
isprime[0]=False
isprime[1]=False
# print(isprime[0:10])
for i in range(2,N):if (isprime[i]==True):index=iwhile index<N:index+=iisprime[index]=0
for i,val in enumerate(isprime[0:N]):if val==True:print(i)

4、求完数(1017)

一个数如果恰好等于不包含它本身所有因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。

① 这个题最常见的思路是两层循环,依次列举出每一个数的因子并判断

N=int(input())
x=[1]
for i in range(2,N+1):for j in range(2,i):if(i%j)==0:x.append(j)if x !=None:if i==sum(x):print("%d"%i,"its factors are ",end="")print(*x,sep=" ")x=[1]

运行时间超时了。。。。。

② 仔细思考一下,一个数的最小因子就是2(最小是2,也有可能是3、5、7),那么一个数的最大因子不会超过其1/2,所以只需要在某个数的一半找其对应的因子即可

N=int(input())
x=[1]
for i in range(2,N+1):for j in range(2,int(i/2)+1):if(i%j)==0:x.append(j)if x !=None:if i==sum(x):print("%d"%i,"its factors are ",end="")print(*x,sep=" ")x=[1]

运行时间仍然超时

分析:

第一个时间复杂度为 n ∗ n = o ( n 2 ) n*n=o(n^{2} ) nn=o(n2)
第二个时间复杂度为 n ∗ ( n 2 ) = o ( ( n 2 ) 2 ) n*(\frac{n}{2})=o((\frac{n}{2})^{2} ) n(2n)=o((2n)2)
整体时间复杂度都为
o ( n 2 ) o(n^{2} ) o(n2)

③后面在网上看到了这一招,自己怎么就没想到喃,先上代码

n = int(input())
for i in range(6, n + 1, 2):factors = [1]sqrt_i = int(pow(i,0.5))for j in range(2, sqrt_i + 1):if i % j == 0:factors.append(j)if j != i // j:factors.append(i // j)if sum(factors) == i:print(f"{i} its factors are {' '.join(map(str, sorted(factors)))}")

其实就是先穷举找到 [ 0 , x ] \left [ 0,\sqrt{x} \right ] [0x ]范围内的因子,然后用x整除这些因子,就可以求到 [ x , x ] \left [ \sqrt{x},x \right ] [x x]范围内的因子
即找全所有因子
计算复杂度可以理解为
o ( n log ⁡ n ) o(n\log_{}{n} ) o(nlogn)

5、数字后移(1046)

在这里插入图片描述
这里题目要求的是一种类似循环数组的方式,核心是取余运算

n=int(input())
x=list(input().split())
y=list(x)
m=int(input())
for i in range(0,n):idx=(i+m)%(n)y[idx]=x[i]
print(*y,sep=" ")

注意:

#指向相同的对象,x,y中的一个改变,另一个都会随之改变
x=list(input().split())
y=x
<<<<<<------------------------>>>>>>
#指向不同的对象,两个互不影响
x=list(input().split())
y=list(x)

相关文章:

  • 【数据结构】八大排序(一)
  • 关于微信小程序中如何实现数据可视化-echarts动态渲染
  • 网络运维与网络安全 学习笔记2023.11.27
  • K8s 中 Pod OOMKilled 原因
  • 【数据结构】什么是栈?
  • 【C++】探索C++模板编程
  • 探索接口测试:SOAP、RestFul规则、JMeter及市面上的接口测试工具
  • Java网络爬虫实战
  • Skywalking接入实际应用做日志跟踪
  • js中声明变量的关键字(const,let,var)
  • Java 简易版王者荣耀
  • 双11再创新高!家电行业如何通过矩阵管理,赋能品牌增长?
  • C语言--每日选择题--Day27
  • 15 网关实战: 微服务集成Swagger实现在线文档
  • 全新爱蜗影视优码双端影视源码v9.1/影视视频APP源码+支持代理/在线支付+支持对应苹果CMS
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • es6要点
  • extract-text-webpack-plugin用法
  • Iterator 和 for...of 循环
  • js递归,无限分级树形折叠菜单
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Making An Indicator With Pure CSS
  • mongodb--安装和初步使用教程
  • OSS Web直传 (文件图片)
  • php中curl和soap方式请求服务超时问题
  • Promise初体验
  • python 学习笔记 - Queue Pipes,进程间通讯
  • SpiderData 2019年2月23日 DApp数据排行榜
  • springboot_database项目介绍
  • SpringCloud集成分布式事务LCN (一)
  • vue 个人积累(使用工具,组件)
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • webpack+react项目初体验——记录我的webpack环境配置
  • 浏览器缓存机制分析
  • ​ArcGIS Pro 如何批量删除字段
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • # Apache SeaTunnel 究竟是什么?
  • #每日一题合集#牛客JZ23-JZ33
  • #前后端分离# 头条发布系统
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (a /b)*c的值
  • (Forward) Music Player: From UI Proposal to Code
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (LeetCode) T14. Longest Common Prefix
  • (Oracle)SQL优化技巧(一):分页查询
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (zt)最盛行的警世狂言(爆笑)
  • (阿里云万网)-域名注册购买实名流程
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (算法)前K大的和
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • .NET Core IdentityServer4实战-开篇介绍与规划