首页 > 编程语言 >蓝桥杯备战日志(Python)2-相乘(逆向枚举)

蓝桥杯备战日志(Python)2-相乘(逆向枚举)

时间:2023-01-29 17:00:52浏览次数:46  
标签:Python 相乘 1000000007 蓝桥 枚举 2021 余数

原题

小蓝发现,他将 蓝桥杯备战日志(Python)2-相乘(逆向枚举)_枚举区间 至 蓝桥杯备战日志(Python)2-相乘(逆向枚举)_Python_02 之间的不同的数与 蓝桥杯备战日志(Python)2-相乘(逆向枚举)_Python_03 相乘后再求除以 蓝桥杯备战日志(Python)2-相乘(逆向枚举)_Python_02 的余数,会得到不同的数。 小蓝想知道,能不能在 蓝桥杯备战日志(Python)2-相乘(逆向枚举)_枚举区间 至 蓝桥杯备战日志(Python)2-相乘(逆向枚举)_Python_02 之间找到一个数,与 蓝桥杯备战日志(Python)2-相乘(逆向枚举)_Python_03 相乘后 再除以 蓝桥杯备战日志(Python)2-相乘(逆向枚举)_Python_02 后的余数为 蓝桥杯备战日志(Python)2-相乘(逆向枚举)_Python_09。如果存在,请在答案中提交这个数; 如果不存在,请在答案中提交 蓝桥杯备战日志(Python)2-相乘(逆向枚举)_Python_10


分析

本题可以使用通常的暴力枚举遍历1~1000000007并判断是否有满足条件的数,但时间复杂度太大。我们进行“逆向枚举”。


  • 令n = 1000000007, s = 999999999
  • 一般思路在区间[1,1000000007]找到一个x,使得2021*x ÷ n = d ······ s(即2021x除以n等于d,余数为s)
  • 枚举x的区间范围较大,不妨转换式子为:2021*x = d*n+ s (d为正整数),此时可通过x的最小值和最大值求出d的范围
  • d的范围为[(2021-s)/n, 2021-s/n]
  • 本题中,经过计算,d的取值区间为[1,2020] (d为正整数),这大大压缩了枚举范围


源码(Python)

n = 1000000007
s = 999999999


for d in range(0,2021):
x,m = divmod(n*d+s,2021)
if m == 0:
print(x)
break

if m!=0:
print(0)


上一篇:​​蓝桥杯备战日志(Python)1-卡片&直线(普通填空)​

标签:Python,相乘,1000000007,蓝桥,枚举,2021,余数
From: https://blog.51cto.com/gpnuCITlabCar/6025877

相关文章

  • 《深度学习入门 基于Python的理论与实现》书中代码笔记
    源码笔记【仅为个人笔记记录】第三章sigmoid函数#coding:utf-8importnumpyasnpimportmatplotlib.pylabaspltdefsigmoid(x):return1/(1+np.exp(-x))X......
  • 【Demo】Python + Echarts 简易实现一个数据分布图
    文章目录​​前言​​​​需求​​​​最终实现​​​​源码​​​​1.统计各省市总数量​​​​excle源文件示例​​​​统计​​​​2.Echarts的使用​​​​所需文件​​......
  • gdb同时调试python和c++
    说明:当我们的python程序的一些函数的后端实现为C++时(比如Pytorch,TensorFlow或tvm等)可以使用当前方法调试。有两种方式可以安装调试环境:一.搭建环境有两种方式搭建......
  • ORM哪家强?java,c#,php,python,go 逐一对比, 网友直呼:全面客观
    前言最近一段时间,我使用golang开发了一个新的ORM库。为了让这个库更好用,我比较研究了各语言的主流ORM库,发现有一些语言的ORM库确实很好用,而有另外一些语言的库那不是一般......
  • Python和C++联合调试
     python和c++分别在Linux和Windows下联合调试首先创建一个python测试项目和一个c++拓展项目一、在Windows下进行调试1.编译器安装2.C拓展模块安装3.调试......
  • ubuntu下C++如何调用python程序,gdb调试C++代码
    Linux下gdb调试C++代码:http://jingyan.baidu.com/article/acf728fd464984f8e410a369.html主要ubuntu下使用C++调用Python:#python代码:(processing_module.py)importcv2......
  • python绘制折线图
    importdatetimeimportmatplotlib.pyplotaspltimportpylabasmplimportnumpyasnp#数据源list_date=['20191005','20191014','20191021','20191217','20......
  • Python字典对象的创建(9种方式)
    第一种方式:使用{}firstDict={"name":"wangyuanwai","age":25} 说明:{}为创建一个空的字典对象第二种方式:使用fromkeys()方法second_dict=dict.f......
  • 常见的6个Python数据可视化库!
    提到数据可视化库,相信大家对这个都不陌生,而且Python中内置了很多数据可视化库,是我们工作的好帮手。本文为大家介绍一下常见的6个Python数据可视化库,希望对你们有帮助。......
  • python 实现app性能测试(cpu、内存占用情况)
    一、获取appcpu占用情况1、实现代码importos,csvimporttimeimportnumpyasnpfrommatplotlibimportpyplotaspltfromcheck_packageimportcheck_package......