每日一练蓝桥杯C语言:暴力枚举 您所在的位置:网站首页 语言暴力是暴力吗 每日一练蓝桥杯C语言:暴力枚举

每日一练蓝桥杯C语言:暴力枚举

2024-07-07 12:44| 来源: 网络整理| 查看: 265

在这里我给大家推荐一款不错刷算法学习网站:点击这处链接牛客网;牛客网作为国内内容超级丰富的 IT 题库,各种东西看的我眼花缭乱,题库+面试+学习+求职+讨论+大厂内推等等服务,堪称"互联网求职神器"。它好就好在不只是一个刷题的平台,还是一个交流学习的平台,发个问题贴总有热心的大佬帮助。

暴力枚举 猜年龄问题描述:思路分析: 网友年龄问题描述:思路分析: 生日年龄数问题描述:思路分析: 数学题问题描述:思路分析: 马虎的算式问题描述:思路分析: 奇怪的分式问题描述:思路分析: 几何题问题描述:思路分析:

在进行归纳推理时,如果逐个考察了某类事件的所有可能情况,因而得出一般结论,那么这结论是可靠的,这种归纳方法叫做枚举法.

枚举法,也叫暴力破解法,是一种基于逐个尝试答案的一种问题求解策略。

最开始接触算法的时候,大家练习的基础算法都是有关于枚举算法的,比如打印出9 * 9的乘法表,求水仙花数,求素数等等,像这一类的题目就是在一定的范围内寻找满足条件的答案。

枚举算法的核心思想就是:枚举所有的可能

猜年龄 问题描述:

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

思路分析:

通过暴力破解的方法,找到年龄的大概范围,假设他的年龄为x,10^3=1000, 30^4=8100,说明x的范围在[10,30]之间。

int main(){ for(int i = 10;i int i,a,b,son,sum=0; for(i=27;i printf("%d\n",i); sum++; } } printf("共有%d种可能性\n",sum); return 0; }

结果:

30 41 52 63 74 85 96 共有7种可能性 生日年龄数 问题描述:

某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。现在算起来,他一共吹熄了236根蜡烛。

请问,他从多少岁开始过生日party的?

请输出他开始过生日party的年龄数。

注意:你输出的应该是一个整数,不要输出任何多余的内容或说明性文字。

输入

没有输入。

输出

输出一个整数,即某君开始过生日party的年龄数

提示

用printf或cout输出答案。

思路分析:

假设i为初始年龄,j为终止年龄,j肯定要大于i,那么j=i+1,k为多少根蜡烛!暴力累加。

int main() { for(int i=1;i int sum=0; for(int k=i;k int ans=0; for(int i=10000;i ans++; } } printf("能被3整除的有%d个",ans); return 0; }

结果:能被3整除的有3000个

马虎的算式 问题描述:

小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。有一次,老师出的题目是:36 x 495 =? 他却给抄成了:396 x 45 = ? 但结果却很戏剧性,他的答案竟然是对的!! 因为 36 * 495 = 396 * 45= 1782 类似这样的巧合情况可能还有很多,比如:27* 594 = 297 * 54

假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)

能满足形如: ab * cde = adb* ce 这样的算式一共有多少种呢?请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。

满足乘法交换律的算式计为不同的种类,所以答案肯定是个偶数。

答案直接通过浏览器提交。注意:只提交一个表示最终统计种类数的数字,不要提交解答过程或其它多余的内容。

思路分析:

假设a b c d e 代表1~9不同的5个数字,a b c d e的范围在【1,9】,有多少种结果用ans累加法,通过判断条件abcde=adbce满足条件累加1,然后有一种可能就是a与b相等,所以判断否定a不等于b,其他字母也一样。

#include int main(){ int ans=0,m,n; for(int a = 1;a for(int c = 1;c for(int e =1;e ans++; } } } } } } printf("一共%d种",ans); return 0; }

结果:142

奇怪的分式 问题描述:

上小学的时候,小明经常自己发明新算法。一次,老师出的题目是: 1/4 乘以 8/5 小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45。老师刚想批评他,转念一想,这个答案凑巧也对啊,真是见鬼!

对于分子、分母都是 1~9 中的一位数的情况,还有哪些算式可以这样计算呢? 请写出所有不同算式的个数(包括题中举例的)。

显然,交换分子分母后,例如:4/1 乘以 5/8 是满足要求的,这算做不同的算式。

但对于分子分母相同的情况,2/2 乘以 3/3 这样的类型太多了,不在计数之列!

注意:答案是个整数(考虑对称性,肯定是偶数)。

请通过浏览器提交。不要书写多余的内容。

思路分析:

其实跟上一道差不多,找出范围,找出判断条件,找出不符合条件,利用累加ans

注意不可以用(a/b)*(c/d)==((a*10+c)/b*10+d)),而是利用数学里面的十字相乘法

#include int main(){ int ans=0; for(int a=1;a for(int c =1;c if(a==b&&c==d) continue; int e = a*10+c,f = b*10+d; if(a*c*f==b*d*e){ ans++; } } } } } printf("%d",ans); return 0; }

结果:14

几何题 问题描述:

小蓝有一个超大的仓库,可以摆放很多货物。现在,小蓝有 n 箱货物要摆放在仓库,每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向,每箱货物的边都必须严格平行于长、宽、高。小蓝希望所有的货物最终摆成一个大的立方体。即在长、宽、高的方向上分别堆 L 、 W 、 H 的货物,满足 n = L × W × H。给定 n ,请问有多少种堆放货物的方案满足要求。

例如,当 n = 4 时,有以下 6 种方案: 1 × 1 × 4 、 1 × 2 × 2 、 1 × 4 × 1 、 2 × 1 × 2 、 2 × 2 × 1 、 4 × 1 × 1

请问,当 n = 2021041820210418 (注意有 16位数字)时,总共有多少种方案? 提示:建议使用计算机编程解决问题。

思路分析:

循环暴力枚举解决法,理论上可以,可行性不行,转换思路分解出整个数字的所有因(约)数,然后对所有的因数暴力枚举两重循环,计算出结果。

#include int judge(long long a,long long b,long long c) { if(a==b==c)//长宽高相同排列只有一种组合 return 1; if(a==b&&a!=c||a==c&&a!=b||b==c&&a!=b) //长宽高 任意两个相同排列只有3种 return 3; else return 6; //长宽高都不相同排列只有6种 } int mian() { long long n =2021041820210418; long long L,W,H; long long ans=0; for(L=1;L*L*L for(W=L;L*W*W H=n/L/W; if(H>=W){ ans+=judge(L,W,H); } } } } } printf("%d",ans); }

结果:2430

在这里插入图片描述

观众老爷们,点个关注吧!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有