0
点赞
收藏
分享

微信扫一扫

【Python训练营】基础题目刷刷刷

卿卿如梦 2022-05-03 阅读 81

1.矩形切割

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小明有一些矩形的材料,他要从这些矩形材料中切割出一些正方形。
当他面对一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方 形,剩下一块矩形,然后再切割剩下的矩形材料,直到全部切为正方形为止。
例如,对于一块两边分别为 5 和 3 的材料,小明会依次切出 3×3、2×2、1×1、1×1 共 4 个正方形。

现在小明有一块矩形的材料,两边长分别是 2019 和 324。请问小明最终会切出多少个正方形?

源码分析

在这里插入图片描述
1.暴力数数法

import os
import sys

# 请在此输入您的代码
print(21)

2.正规编程法

import os
import sys

# 请在此输入您的代码
wide = 2019
high = 324
count = 0 # 计数
while wide != high:
    wide = wide - high
    if wide < high:
        wide, high= high, wide # wide, high交换
    count += 1
print(count + 1)

2.相乘

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 小蓝发现,他将 1 至 1000000007 之间的不同的数与 2021 相乘后再求除以 1000000007 的余数,会得到不同的数。 小蓝想知道,能不能在 1 至 1000000007 之间找到一个数,与 2021 相乘后 再除以 1000000007后的余数为 99999999。如果存在,请在答案中提交这个数; 如果不存在,请在答案中提交 0。

源码分析

# @Time : 2022/3/7 19:46
# @Author : 是Dream呀
# @File : 相乘.py
import os
import sys
#此题乃反向解法,通过假定知道商,进行反向替换
# 请在此输入您的代码
for i in range(1,10000):
    if (i*1000000007+999999999) % 2021 == 0:
        print(int((i*1000000007+999999999) / 2021))
        break

3.约数个数

题目描述

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
1200000有多少个约数(只计算正约数)。

源码分析

1.正常思路做法:

# @Time : 2022/3/9 9:58
# @Author : 是Dream呀
# @File : 约数个数.py
import os
import sys

# 请在此输入您的代码
import math
num = 1200000
count = 0
for i in range(1, num+1):
  if num % i == 0:
    count += 1
print(count)

2.利用math函数开平方,然后进一步节省时间,要记住右边要进行int取整,让后再+1

import math
total = 0
for i in range(1,int(math.sqrt(1200000))+1):
    if 1200000 % i == 0:
        total += 1
print(2*total)

🌲🌲🌲 最后,作者很感谢能够阅读到这里的读者。如果看完觉得好的话,还请轻轻点一下赞或者分享给更多的人,你们的鼓励就是作者继续行文的动力。
❤️❤️❤️如果你喜欢的话,就不要吝惜你的一键三连了,我们下期再见~
在这里插入图片描述
在这里插入图片描述

举报

相关推荐

0 条评论