广东省建设厅投诉网站,湖南关键词优化推荐,成都设计公司招聘,如何查询网站接入商刷题网站 记录总结刷题过程中遇到的一些问题
1、最大公约数与最小公倍数
a,bmap(int,input().split())sa*bwhile a%b:a,bb,a%bprint(b,s//b)2.迭代法求平方根(题号1021)
#includestdio.h
#includemath.h
int main()
{double x11.0,x2;int a;scanf(%dmap(int,input().split())sa*bwhile a%b:a,bb,a%bprint(b,s//b)2.迭代法求平方根(题号1021)
#includestdio.h
#includemath.h
int main()
{double x11.0,x2;int a;scanf(%d,a);do{x1x2;x2(x1a/x1)/2;}while(fabs(x2-x1)0.00001);printf(%.3lf,x1);return 0;
}3、筛选N以内的素数(1022)
采用埃筛法筛选素数
思路是给定一个较大的bool数组刚开始将其所有元素赋值为True,从2开始那么2的倍数就一定不是素数将对应的bool值重新赋值为0依次,3的倍数也不是素数…
Nint(input())
isprime[True]*10000
isprime[0]False
isprime[1]False
# print(isprime[0:10])
for i in range(2,N):if (isprime[i]True):indexiwhile indexN:indexiisprime[index]0
for i,val in enumerate(isprime[0:N]):if valTrue:print(i)4、求完数1017
一个数如果恰好等于不包含它本身所有因子之和这个数就称为完数。 例如6的因子为1、2、3而6123因此6是完数。
① 这个题最常见的思路是两层循环依次列举出每一个数的因子并判断
Nint(input())
x[1]
for i in range(2,N1):for j in range(2,i):if(i%j)0:x.append(j)if x !None:if isum(x):print(%d%i,its factors are ,end)print(*x,sep )x[1]运行时间超时了。。。。。
② 仔细思考一下一个数的最小因子就是2最小是2也有可能是3、5、7那么一个数的最大因子不会超过其1/2所以只需要在某个数的一半找其对应的因子即可
Nint(input())
x[1]
for i in range(2,N1):for j in range(2,int(i/2)1):if(i%j)0:x.append(j)if x !None:if isum(x):print(%d%i,its factors are ,end)print(*x,sep )x[1]运行时间仍然超时
分析:
第一个时间复杂度为 n ∗ n o ( n 2 ) n*no(n^{2} ) n∗no(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 这里题目要求的是一种类似循环数组的方式核心是取余运算
nint(input())
xlist(input().split())
ylist(x)
mint(input())
for i in range(0,n):idx(im)%(n)y[idx]x[i]
print(*y,sep )注意:
#指向相同的对象x,y中的一个改变另一个都会随之改变
xlist(input().split())
yx
------------------------
#指向不同的对象两个互不影响
xlist(input().split())
ylist(x)