一、模运算
试题链接:余数
问题描述
小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做a道题目,周六和周日每天做b道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于n题?
输入描述
输入一行包含三个整数 a,b 和 n。
输出描述
输出一个整数代表天数。
对于 50%的评测用例,1≤a,b,n≤10^6;对于 100%的评测用例,1≤a,b,n≤10^18
输入示例
10 20 99
输出示例
8
问题分析
求余数的简单题,利用求余,把计算复杂度降为 0(1)
代码示例
a,b,n=map(int,input().split())
yz=a*5+b*2
x=n//yz
y=n%yz
if y<=a*5:
if y%a>0:
print(x*7+y//a+1)
else:
print(x*7+y//a)
else:
y-=a*5
if y%b>0:
print(x*7+y//b+6)
else:
print(x*7+y//b+5)
二、快速幂
试题链接:快速幂
问题描述
输入b,p,k的值,求b mod k的值。其中2≤b,p,k≤ 10^9
输入描述
三个整数 b, p, k。
输出描述
输出 (b^p)mod k=s,s为运算结果。
输入示例
2 10 9
输出示例
7
代码示例
def fast_pow(a,n,mod):
ans = 1
a %= mod
while n>0:
if n & 1 == 1:
ans=(ans*a)%mod
a =(a * a)% mod
n >>= 1
return ans
b,p,k=map(int,input().split())
print(fast_pow(b,p,k))
b,p,k=map(int,input().split())
print(pow(b,p,k))
三、最大公约数
代码示例
def gcd(a,b):
if b==0:
return a
return gcd(b,a%b)
a,b=map(int,input().split())
x=gcd(a,b)
print(x)
四、最小公倍数
ps:注意在考虑三个数的最小公倍数时,先对其中两个求lcm,再用这个lcm与另一个值求lcm
代码示例
def gcd(a,b):
if b==0:
return a
return gcd(b,a%b)
def lcm(a,b):
return a//gcd(a,b)*b
a,b=map(int,input().split())
x=lcm(a,b)
print(x)
五、素数
代码示例
def sushu(a):
for i in range(2,int(a**0.5)+1):
if a%i==0:
return "no"
return "yes"
m=int(input())
if m<=0:
print("no")
else:
print(sushu(m))