当前位置: 首页 > news >正文

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

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位数,一定小于30
	for(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库,可以很方便的解决所有时间问题

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

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

循环判断

满足 是10月  是1号  是周日

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

日期增加1

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

输出结果

print(cnt)

答案

9

code

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+=1
    a+=timedelta(1)
print(cnt)

相关文章:

  • 深入理解 HTML 链接:网页导航的核心元素
  • 前端npm包- CropperJS
  • 鸿蒙路由 HMrouter 配置及使用一
  • 凝思linux修改mac地址
  • Spring Boot 约定大于配置:实现自定义配置
  • 山东省新一代信息技术创新应用大赛-计算机网络管理赛项(样题)
  • Epoch 和 Batch Size的设计 + 模型的早停策略(基于上篇)
  • [目标检测] 训练之前要做什么
  • 高效办公利器:深入解析FastExcel如何读写Excel文件
  • 【Visio使用教程】
  • 机器学习之向量化
  • 【第8章】亿级电商平台订单系统-技术选型
  • 每日一题--面试
  • c#面试题整理12
  • WordPress the_category与single_cat_title的区别
  • php-fpm.log文件过大导致磁盘空间跑满及php-fpm无法重启问题处理
  • Linux——信号
  • DHCP中继实验
  • 设计模式--单例模式(Singleton)【Go】
  • SAP Commerce(Hybris)营销模块(一):商城产品折扣配置
  • 上海护师邢红获第50届南丁格尔奖,她为何能摘得护理界最高荣誉
  • 全球前瞻|特朗普访问中东三国,印巴军方将于12日再次对话
  • 人民时评:莫让“假俗乱”讲解侵蚀“文博热”
  • 中方发布会:中美经贸高层会谈氛围是坦诚的、深入的、具有建设性的
  • 巴称巴控克什米尔地区11人在印方夜间炮击中身亡
  • 云南多地突查公职人员违规饮酒:公安局门口开展酒精吹气测试