2022年1月4日 python练习

Posted on 2022-01-04  25 Views


洛谷

题目描述

给定n(n≤10000) 和 k(k≤100),将从 1 到 n 之间的所有正整数可以分为两类:A 类数可以被 k 整除(也就是说是 k 的倍数),而 B 类数不能。请输出这两类数的平均数,精确到小数点后 1 位,用空格隔开。

数据保证两类数的个数都不会是 0。
输入格式


输出格式


输入输出样例
输入 #1

100 16

输出 #1

56.0 50.1


简单粗暴,直接模拟即可

n,k = map(int,input().split())
sum_a = 0
sum_b = 0
index = 0
for i in range(1,n+1):
    if i%k==0:
        sum_a+=i
        index+=1
    else :
        sum_b+=i
print(round(sum_a/index,1),round(sum_b/(n-index),1))

洛谷P5720 【深基4.例4】一尺之棰

在这里插入图片描述
同样很简单,模拟即可

a = int(input())
i = 1
while a != 1:
    a=int(a/2)
    i+=1
print(i)

洛谷P5723 【深基4.例13】质数口袋

在这里插入图片描述

这题考察素数筛选,比较快的方法是使用筛法求素数,筛法求素数比较基础有很多博客也都写过了这里就不再赘述,剩下的部分就是求和,很简单直接贴代码

prime = [bool(True)]*10005
prime[1] = False
for i in range(2,len(prime)):
    if prime:
        j = 2
        while i*j <= len(prime) - 1:
            prime[i*j] = False
            j+=1
l = int(input())
sumed = 0
i = 1
count = 0
for i in range(2,len(prime)):
    if prime[i]:
        if sumed + i <= l:
            sumed += i
            print(i)
            count+=1
        else :
            print(count)
            break

欢迎来到parafish的个人博客,这里是一个正在努力的ctfer

路虽远,行则必至