旅游网站开发网站设计报告书,网络推广渠道有哪些及策划思路,商城模板建站价格,东莞产品展厅设计公司文章目录 循环握手问题门牌制作-循环小球反弹幸运数艺术与篮球跑步 位运算3个1美丽的2024 位运算 可以关注这个Lowbit(x) 如何判断最低位是否是1#xff1f; num1 1就说明num最低位是1 循环
循环
握手问题
握手问题 思路分析#xff1a; 可以直接计算出来#xff… 文章目录 循环握手问题门牌制作-循环小球反弹幸运数艺术与篮球跑步 位运算3个1美丽的2024 位运算 可以关注这个Lowbit(x) 如何判断最低位是否是1 num1 1就说明num最低位是1 循环
循环
握手问题
握手问题 思路分析 可以直接计算出来但是我们也同时可以用循环进行模拟 # 使用逆向思维
# 全部都握手-7人之间的相互握手
ans 0
for i in range(1,50):ansi
# 7个人之间相互握手
ans1 0
for j in range(1,7):ans1j
print(ans-ans1)
# 答案是1204模拟的代码
ans 0
for i in range(1, 51):for j in range(i1, 51):if i 7 and j 7:continueelse:ans 1门牌制作-循环
门牌制作 思路分析可以通过数学规律进行求解但是也可以暴力循环计算 # 直接模拟
from collections import Counter
num []for i in range(1,2021):s list(str(i))num.extend(s)countnum Counter(num)
print(countnum[2])
# 答案624小球反弹
小球反弹 思路循环关键在于运动的分解 def check(a, b):if a % b 0 and (a // b) % 2 0:return Truereturn Falseimport math
t 1
LA , LB 0,0
while True:LA 15*tLB 17*t# if LA % 343720 0 and (LA//343720) % 2 0 and LB % 233333 0 and (LB//233333) % 2 0:if check(LA,343720 ) and check(LB,233333):breakt1
print(math.sqrt(LA**2 LB**2))
幸运数
幸运数 思路分析直接暴力求解 end 100000001
ans 0
def manzu(num):a list(map(int,str(num)))n len(a)if n % 2 1:return Falseif sum(a[:n//2]) sum(a[n//2:]):return Truereturn Falsefor i in range(1,end):if manzu(i):ans1
print(ans)# 4430091艺术与篮球
艺术与篮球 思路分析直接暴力模拟即可 # 先建立映射表
# 闰年的计算能够被4整除但是不能被100整除或者能够被400整除
# 笔画对应
mat {0:13,1:1,2:2,3:3,4:5,5:4,6:4,7:2,8:2,9:2}
day {1:31,2:28,3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:30,12:31}
ans1,ans2 0,0
def run(year):if (year % 4 0 and year % 100 ! 0 ) or (year % 400 0):return Trueelse:return False
def cal(num):a list(num)suma 0for i in a:suma mat[i]if suma 50:return Trueelse:return False
for y in range(2000,2024):s1 str(y)for m in range(1,13):s2 str(m)if m 10:s2 0 s2d day[m]if run(y) and m 2:d1for i in range(1,d1):s3 str(i)if i 10:s3 0 s3if cal(s1s2s3):ans11
print(ans1)
# 3185
# 现在计算20240101到20240413
for y in range(2024,2025):s1 str(y)for m in range(1,5):s2 str(m)if m 10:s2 0 s2d day[m]if run(y) and m 2:d1if m 4:d 13for i in range(1,d1):s3 str(i)if i 10:s3 0 s3if cal(s1s2s3):ans21
# 43个
print(ans2)
print(ans1ans2)
# 3228跑步
跑步 思路分析通过模拟循环暴力即可不过得学会怎么求解当天是否是周末 from datetime import datetime
from datetime import timedelta
# 还是暴力求解不过得知道哪几天是周六与周日
# 就得使用到这个datetime
day {1:31,2:28,3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:30,12:31}
# 31天的月份有1,3,5,7,8,10,12
# 还是得遍历
ans2 0
for m in range(1,13):d day[m]for i in range(1,d1):start1 datetime(2022,1,1)t1 datetime(2022,m,i) - start1da t1.days# 分别是周六和周日if da % 7 0 or da % 7 1:ans21continue# 当不满足周末的情况下if i in {1,11,21,31}:ans21
print(ans2)
# 138
位运算
3个1 思路分析学会统计一个十进制数中转化为二进制的形式里面1的个数 # 直接暴力求解
# 位运算要学会移位运算
# 统计num二进制里面的1的个数
def cal1(num):count 0while num 0 :# 首先判断最低位是否是1if num 1 1:count 1# 右移操作看看其他位的情况num num 1return count 3cou 0
t 1
while True:if cal1(t):cou1if cou 23:print(t)breakt1美丽的2024
美丽的2024 思路分析直接照搬上一题的cal1函数 # 直接暴力求解
# 位运算要学会移位运算
# 统计num二进制里面的1的个数
def cal1(num):count 0while num 0 :# 首先判断最低位是否是1if num 1 1:count 1# 右移操作看看其他位的情况num num 1return countprint(cal1(2024))
# 7