【蓝桥杯速成】| 1.暴力解题

devtools/2025/3/13 12:58:38/

1高频考点与暴力解题_哔哩哔哩_bilibili

感谢up主分享,以下内容是学习笔记,以c++为主,部分python


题目一:维纳的年龄

题目内容

美国数学家维纳(N.Wiener)智力早熟,
11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。
一次,他参加某个重要会议,年轻的脸孔引人注目。
于是有人询问他的年龄,
他回答说:“我年龄的立方是个4位数。我年龄的4次方是个6位数。
这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。” 
请编程输出当年维纳的年龄。

解题步骤

利用暴力法枚举得到维纳的年龄,

先对大致范围做一个确定

立方为4位数,一定大于10,

4次方为6位数,一定小于30

所以外层循环为

for(int i=10;i<30;i++){} 

 再求出年龄的立方和四次方,保险起见用long long

    long long cube=(long long)i*i*i;long long forth=(long long)i*i*i*i;

 再做检查,进一步缩小范围,以此为内层条件

    if(cube>1000 && cube<10000 && forth>100000 && forth<1000000){}

 利用自定义函数检查是否包含0~9

可以把立方和四次方转为字符串,再用字符串的sort方法排序,方便挨个检查

这样可以不用字典之类的统计次数啥的,比较简单

bool isunique(long long cube,long long forth){//把两个数字转为字符串并且拼接 string s=to_string(cube)+to_string(forth);//调用字符串函数进行排序,方便检查 sort(s.begin(),s.end());//逐个检查 for(int i=0;i<10;i++){if(s[i]!='0'+i)	return false;}return true;
}

如果符合要求在主函数中打印输出,可以再看看是否正确

cout<<i<<" "<<cube<<" "<<forth;

答案

18岁 

 code

#include<iostream>
#include<string>
#include<algorithm>using namespace std;bool isunique(long long cube,long long forth){//把两个数字转为字符串并且拼接 string s=to_string(cube)+to_string(forth);//调用字符串函数进行排序,方便检查 sort(s.begin(),s.end());//逐个检查 for(int i=0;i<10;i++){if(s[i]!='0'+i)	return false;}return true;
}
int main(){//使用暴力枚举//先确定大致范围,立方为4位数,一定大于10,//4次方为6位数,一定小于30for(int i=10;i<30;i++){//求出这该4位数和6位数long long cube=(long long)i*i*i;long long forth=(long long)i*i*i*i;//再做检查 if(cube>1000 && cube<10000 && forth>100000 && forth<1000000){//调用函数检查是否包含0~9 if(isunique(cube,forth))//结果输出再检查一下! cout<<i<<" "<<cube<<" "<<forth;}} return 0;
}

 题目二:小明的妹妹

题目内容

小明带两个妹妹参加元宵灯会。
别人问她们多大了,她们调皮地说:“我们俩的年龄之积是年龄之和的6倍”。
小明又补充说:“她们可不是双胞胎,年龄差肯定也不超过8岁啊。”
请你写出:小明的较小的妹妹的年龄。

解题步骤

 用两个int型变量表示两人年龄,初定范围1~50岁

int x,y;//x为较小的妹妹 
for(x=1;x<100;x++){//给定年龄合适区间

年龄差不超过8岁就从8岁开始倒推

y=x+8;//相差不超过8岁 
for(;y>x;y--){

逐个检查年龄之积是年龄之和的6倍

if(x*y==6*(x+y))//年龄之积是年龄之和的6倍cout<<x<<" "<<y;//输出检查 

答案

10

code

#include<iostream>
using namespace std;
int main(){int x,y;//x为较小的妹妹 for(x=1;x<50;x++){//给定年龄合适区间 y=x+8;//相差不超过8岁 for(;y>x;y--){if(x*y==6*(x+y))//年龄之积是年龄之和的6倍cout<<x<<" "<<y;//输出检查 }}
}

题目三:制作门牌

题目内容

小蓝要为一条街的住户制作门牌号。
这条街一共有2020 位住户,门牌号从1 到2020 编号。
小蓝制作门牌的方法是先制作0 到9 这几个数字字符,
最后根据需要将字符粘贴到门牌上,
例如门牌1017 需要依次粘贴字符1、0、1、7,即需要1 个字符0,2 个字符1,1 个字符7。
请问要制作所有的1 到2020 号门牌,总共需要多少个字符2? 

解题步骤

利用好字符串内置函数解题嘎嘎快

从1开始到2020,把数字转为字符串

for(int i=1;i<2021;i++){string s=to_string(i);

统计2出现次数

count(s.begin(),s.end(),'2');

累计得出结果

int sum;
sum+=count(s.begin(),s.end(),'2');

答案

624

code

#include<iostream>
#include<string>
#include <algorithm>
using namespace std;
int main(){int sum;for(int i=1;i<2021;i++){string s=to_string(i);sum+=count(s.begin(),s.end(),'2');}cout<<sum;return 0;
}

 


问题四:国庆节是星期日

问题内容

1949年的国庆节(10月1日)是星期六。
今年(2012)的国庆节是星期一。
那么,从建国到现在,有几次国庆节正好是星期日呢?

解题步骤

使用python中的datetime库,可以很方便的解决所有时间问题

设置起始时间和终止时间,以及统计值

python">a=date(1949,10,1)
b=date(2012,10,1)
cnt=0

循环判断

满足 是10月  是1号  是周日

(注意a.weekday() 返回的整数范围是 0 到 6,分别对应星期一到星期日)

日期增加1

python">while a<=b:if a.month==10 and a.day==1 and a.weekday()==6:cnt+=1a+=timedelta(1)

输出结果

python">print(cnt)

 

答案

9

code

python">from datetime import *
a=date(1949,10,1)
b=date(2012,10,1)
cnt=0
while a<=b:if a.month==10 and a.day==1 and a.weekday()==6:cnt+=1a+=timedelta(1)
print(cnt)


http://www.ppmy.cn/devtools/166773.html

相关文章

反射、 Class类、JVM的类加载机制、Class的常用方法

DAY11.1 Java核心基础 反射 重点和难点&#xff0c;应用面很广 大部分库和框架都需要用到反射机制&#xff0c;它是动态语言的关键&#xff0c;但是概念抽象不好理解 反射&#xff1a;通过实例化类映射到类&#xff0c;从而获取类的信息 概括说就是&#xff1a;常规情况是…

scrcpy pc机远程 无线 控制android app 查看调试log

背景&#xff1a; 公司的安卓机&#xff0c;是那种大屏幕的连接usb外设的。不好挪动&#xff0c;占地方&#xff0c;不能直接连接pc机上的android stduio来调试。 所以从网上找了一个python adb.exe控制器&#xff0c;可以局域网内远程控制开发的app,并在android stduio上看…

2024年广州市智能网联汽车创新实践年度报告

政策法规方面&#xff0c;积极推进《广州市智能网联汽车创新发展条例》的制定和发布&#xff0c;不断完善法规标准体系&#xff0c;为产业创新发展营造良好政策环境&#xff1b;技术创新方面&#xff0c;企业加大研发投入&#xff0c;在自动驾驶算法、车联网安全等关键领域取得…

【架构艺术】Go语言微服务monorepo的代码架构设计

近期因为项目架构升级原因&#xff0c;笔者着手调研一些go项目monorepo的代码架构设计&#xff0c;目标是长期把既有微服务项目重要的部分都转移到monorepo上面&#xff0c;让代码更容易维护&#xff0c;协作开发更加方便。虽然经验不多&#xff0c;但既然有了初步的调研&#…

Webpack 深度解析:构建现代前端工程的基石

一、Webpack 的核心价值与演进 1.1 前端工程化的必然选择 根据 2024 年 JavaScript 现状调查报告&#xff0c;Webpack 以 76% 的使用率稳居构建工具榜首。其核心价值体现在&#xff1a; 模块化支持&#xff1a;处理 15 种模块规范&#xff08;ESM/CJS/AMD 等&#xff09;资源…

【数学建模】001

数学建模 方法论 层次分析法&#xff1a;确定评级价指标形成评价体系 1.评价的目标是什么 2.评价标准是什么 3.可选方案有哪些 以此来选择最优方案 “两两”比较发来确定指标重要性 可以画图列表&#xff0c;产生几个比较变量&#xff1a;产生一系列正互反矩阵&#xff0c;进而…

【Java 和 Scala】-- Java 与 Scala 的 Assert 断言对比

目录 Java 与 Scala 的 Assert 断言对比 1. 什么是 Assert&#xff08;断言&#xff09;&#xff1f; 2. 断言的使用场景 3. Java 断言示例 3.1 Java 断言的基本用法 3.2 Java 启用断言 4. Scala 断言示例 4.1 Scala 断言的基本用法 4.2 Scala 断言默认行为 5. Java 与…

高速PCB设计(布线设计)

以下是针对高速PCB布线设计的综合笔记&#xff0c;结合用户提供的设计规范及行业通用原则整理而成&#xff1a; 一、关键信号布线原则 布线优先级 顺序&#xff1a;射频信号&#xff1e;中/低频信号&#xff1e;时钟信号&#xff1e;高速信号射频信号需包地处理&#xff0c;线…