草庐IT

【蓝桥刷题】——如何轻松拿捏必考数论题?(第三弹)

小蓝刷题 2023-08-22 原文

 大家好,我是爱分享的小蓝,欢迎交流指正~ 

全文目录🧭

🏆算式900⭐

🚀传送锚点

 💡思路点拨

🍞代码详解  

🏆神奇算式⭐⭐

🚀传送锚点

 💡思路点拨

🍞代码详解  

🏆带分数⭐⭐⭐

🚀传送锚点​​

 💡思路点拨

🍞代码详解  


🏆算式900⭐

🚀传送锚点

  (□□□□-□□□□)*□□=900

(5012-4987)*36=900

 💡思路点拨

1、审题:先看题目给出的条件:“这 10 个方块刚好包含了 0 ~ 9 中的所有数字”。

2、建模:看到熟悉的题目条件,条件反射全排列函数permutations(╹ڡ╹ )

3、判断:枚举所有排列情况,用字符串分割出方块a,b,c=int(s[:4]),int(s[4:8]),int(s[8:])

条件判断一下if (a-b)*c==900: ,打印符合条件的情况print(a,b,c) ,看哪个最合适就选它。

🍞代码详解  

#数论排列-算式900
from itertools import permutations as per  #导入全排列函数
for per in per('1234567890'):              #('6', '0', '4', '8', '5', '9', '7', '3', '1', '2')
    i=''.join(per)                         #6048597312
    a,b,c=int(i[:4]),int(i[4:8]),int(i[8:])#字符串分割
    if (a-b)*c==900:                       #(6048-5973)*12==900
        print(a,b,c)                       #print('(6048-5973)*12=900')

🏆神奇算式⭐⭐

🚀传送锚点

210 x 6 = 1260 
8 x 473 = 3784
27 x 81 = 2187 

 💡思路点拨

1、审题:遇到这种数论题,一定要细心,挖掘出题目中所有的隐藏条件。

条件1:“4个不同数字”。

条件2:“满足乘法交换律的算式算作同一种情况”。

条件n:······

2、建模:思考自己的手上有哪些函数,可以高效快捷地搭建模型,解决问题。

比如数论常考的函数:str()  list()  sorted()  set()  len()

3、解题:

因为算式左边的数字很小,最大只有一千,所以我们选择二层循环遍历每种情况。

第一步遍历了所有情况,接下来就是按照条件筛选了。

把手里的工具组合起来,整数int转换成字符串str(),字符串转换成字符列表list()

再排个序sorted() 这个时候范围已经缩小了很多。

接下来继续筛选,打印现在的输出 print(i,j,i*j) ,看看哪些不符合条件。

测试输出:750*906=679500,确实有4个不同数字,但跟题目给的样例差距太大了。

所以我们可以看出还有隐藏条件需要挖掘,再进行筛选,加个if判断。

750*906 不能重复set(), 并且长度应该是4,所以要满足len(set(s))==len(set(t))==4

观察i*j=679500,发现数值超过范围10000,所以需要增加数字范围约束1000<i*j<9999

🍞代码详解  

#数论组合-神奇算式
cnt=0
for i in range(1,1000):
    for j in range(i+1,1000):        #i+1:满足小*大的不重复算式
        s=sorted(list(str(i)+str(j)))#['0','1','2','6'] 210 x 6
        t=sorted(list(str(i*j)))     #['0','1','2','6'] 1260
        if s==t and len(set(s))==len(set(t))==4 and 1000<i*j<9999:
           print(i,j,i*j)            #测试输出
           cnt+=1                    #满足条件+1
print(cnt)                           #print(12)

🏆带分数⭐⭐⭐

🚀传送锚点

 输入样例

100

输出样例

11

 💡思路点拨

1、审题:先看题目给出的条件:“100 = 82 + 3546 / 197”。

转换成python的数学语言,n=a+b//c 。

2、建模:看到熟悉的题目条件,条件反射全排列函数permutations(╹ڡ╹ )

3、处理:老规矩,将字符串切割成3块,对应题目里的a,b,c,刚好满足不重复的条件。

接下来最重要的环节就是b和c怎么区分?a和b可以套一层循环遍历,但再套一层就变成O(n^3)太大了,所以需要巧劲,找一个精准的切入点:确定b索引的最后一个位置

通过转换公式:n=a+b//c  →    b=(n-a)*c    →  bnum=(n-a)*int(s[-1])%10

通过%10操作取到乘积的最后一位,也就是b的最后一位。

定位完毕!接下来就简单了,去掉不符合题目的条件continueif判断满足条件的情况。

4、说明:这题蓝桥云课检测可能会超过时间限制,具体看你的网速ms

同样的代码,小蓝网速慢超时了,评论区的大佬网速快,从不超时(*/ω\*)

🍞代码详解  

#数论排列-带分数
from itertools import permutations as per
n=int(input())#100
cnt=0
for per in per('123456789'):
    s=''.join(per)
    for i in range(len(str(n))):
        a=int(s[:i+1])
        bnum=(n-a)*int(s[-1])%10
        if bnum==0:
            continue  #如果出现0,跳出循环加速   
        b_index=s.index(str(bnum)) 
        if b_index<=i or b_index>=8:
            continue  #如果b的索引在a和c里,跳出循环加速 
        b=int(s[i+1:b_index+1])
        c=int(s[b_index+1:])
        if a+b/c==n:
            cnt+=1
print(cnt)#11

  ​​ 友友们,备战蓝桥最后17天,一起冲刺省赛一等奖!​​

有关【蓝桥刷题】——如何轻松拿捏必考数论题?(第三弹)的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  4. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  5. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  6. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  7. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  8. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  9. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

  10. ruby - 如何使用文字标量样式在 YAML 中转储字符串? - 2

    我有一大串格式化数据(例如JSON),我想使用Psychinruby​​同时保留格式转储到YAML。基本上,我希望JSON使用literalstyle出现在YAML中:---json:|{"page":1,"results":["item","another"],"total_pages":0}但是,当我使用YAML.dump时,它不使用文字样式。我得到这样的东西:---json:!"{\n\"page\":1,\n\"results\":[\n\"item\",\"another\"\n],\n\"total_pages\":0\n}\n"我如何告诉Psych以想要的样式转储标量?解

随机推荐