草庐IT

【蓝桥杯试题】暴力枚举题型

卫冕711 2023-05-03 原文

💃🏼 本人简介:男
👶🏼 年龄:18
🤞 作者:那就叫我亮亮叭
📕 专栏:蓝桥杯试题

文章目录

1. 统计方形(数据加强版)

1. 1 题目描述

有一个 n×m 方格的棋盘,求其方格包含多少正方形、长方形(不包含正方形)。

  • 输入格式
    一行,两个正整数 n,m(n ≤ 5000, m ≤ 5000)。

  • 输出格式
    一行,两个正整数,分别表示方格包含多少正方形、长方形(不包含正方形)。

  • 输入样例:

2 3
  • 输出样例:
8 10

1.2 思路解释

  • (1+2+……m)(1+2+……n)=++mn*(m+1)*(n+1)/4是mn为边的长方形内的所有长方形+正方形的数量和
  • 数正方形为mn+(m-1)(n-1)+(m-2)(n-2)+……(m-x)(n-x) x=min(m,n)-1;即有一个减为1则停止

2.3 代码展示

 #include<iostream>
#include<stdio.h>
typedef long long ll;
using namespace std;
int main(){
    ll n,m;
    cin >> n >> m;
    ll sum1 = 0;
    for(int i = n, j = m; i >= 1 && j >= 1; i-- , j--){
        sum1 += (i*j);
    }
    cout << sum1 << " " << m*(m+1)*n*(n+1)/4 - sum1<< endl;
    return 0;
}

//(1+2+……m)*(1+2+……n)=++m*n*(m+1)*(n+1)/4是mn为边的长方形内的所有长方形+正方形的数量和
//数正方形为m*n+(m-1)*(n-1)+(m-2)*(n-2)+……(m-x)*(n-x) x=min(m,n)-1;//即有一个减为1则停止

2. 烤鸡

2.1 题目描述

猪猪 Hanke 特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke 吃鸡很特别,为什么特别呢?因为他有 10 种配料(芥末、孜然等),每种配料可以放 1 到 3 克,任意烤鸡的美味程度为所有配料质量之和。

现在, Hanke 想要知道,如果给你一个美味程度 n ,请输出这 10 种配料的所有搭配方案。

  • 输入格式
    一个正整数 n,表示美味程度。

  • 输出格式

    • 第一行,方案总数。
    • 第二行至结束,10 个数,表示每种配料所放的质量,按字典序排列。
    • 如果没有符合要求的方法,就只要在第一行输出一个 0。
  • 输入样例:

11
  • 输出样例:
 10
1 1 1 1 1 1 1 1 1 2 
1 1 1 1 1 1 1 1 2 1 
1 1 1 1 1 1 1 2 1 1 
1 1 1 1 1 1 2 1 1 1 
1 1 1 1 1 2 1 1 1 1 
1 1 1 1 2 1 1 1 1 1 
1 1 1 2 1 1 1 1 1 1 
1 1 2 1 1 1 1 1 1 1 
1 2 1 1 1 1 1 1 1 1 
2 1 1 1 1 1 1 1 1 1 
  • 说明/提示
    对于 100% 的数据, n≤5000。

2.2 思路解释

  • 直接暴力

2.3 代码展示

#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
const int N = 5e4 + 10; 

int n,cnt = 0;

int main(){
    cin >> n;
    if(n < 10 || n > 30 ){
        cout << 0 << endl;
    }
    else{
        for(int a = 1; a < 4; a++)
        for(int b = 1; b < 4; b++)
        for(int c = 1; c < 4; c++)
        for(int d = 1; d < 4; d++)
        for(int e = 1; e < 4; e++)
        for(int f = 1; f < 4; f++)
        for(int g = 1; g < 4; g++)
        for(int h = 1; h < 4; h++)
        for(int i = 1; i < 4; i++)
        for(int j = 1; j < 4; j++)
        if(a+b+c+d+e+f+g+h+i+j==n)
        cnt++;
        cout << cnt << endl;
        for(int a = 1; a < 4; a++)
        for(int b = 1; b < 4; b++)
        for(int c = 1; c < 4; c++)
        for(int d = 1; d < 4; d++)
        for(int e = 1; e < 4; e++)
        for(int f = 1; f < 4; f++)
        for(int g = 1; g < 4; g++)
        for(int h = 1; h < 4; h++)
        for(int i = 1; i < 4; i++)
        for(int j = 1; j < 4; j++)
        if(a+b+c+d+e+f+g+h+i+j==n)
        cout << a << " " << b << " "<< c << " " << d << " "<< e << " " << f << " "<< g << " " << h << " "<< i << " " << j << endl;
    }
    return 0;
}

3. 烤鸡

3.1 题目描述

将 1,2,…,9 共 9 个数分成三组,分别组成三个三位数,且使这三个三位数的比例A:B:C,试求出所有满足条件的三个三位数,若无解,输出 No!!!。

  • 输入格式
    三个数,A,B,C。

  • 输出格式

    • 若干行,每行 3 个数字。按照每行第一个数字升序排列。
  • 输入样例:

1 2 3
  • 输出样例:
192 384 576
219 438 657
273 546 819
327 654 981
  • 说明/提示
    保证 A<B<C。
    upd 2022.8.3:新增加二组 Hack 数据。

3.2 思路解释

  • 直接暴力

3.3 代码展示

#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace  std;
int a,b,c;
int f[11]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int main(){
    cin >> a >> b >> c;
    bool tmp = 0;
    do{
        int aa = f[1]*100 + f[2]*10 + f[3];
        int bb = f[4]*100 + f[5]*10 + f[6];
        int cc = f[7]*100 + f[8]*10 + f[9];


最后,感谢大家支持u (^ _ ^)

如果感觉这篇文章对你有帮助的话,不妨三连支持下,十分感谢(✪ω✪)。

printf("点个赞吧*^*");
cout << "收藏一下叭o_o";
System.out.println("评论一下吧^_^");
print("关注一下叭0-0")

有关【蓝桥杯试题】暴力枚举题型的更多相关文章

  1. Hive SQL 五大经典面试题 - 2

    目录第1题连续问题分析:解法:第2题分组问题分析:解法:第3题间隔连续问题分析:解法:第4题打折日期交叉问题分析:解法:第5题同时在线问题分析:解法:第1题连续问题如下数据为蚂蚁森林中用户领取的减少碳排放量iddtlowcarbon10012021-12-1212310022021-12-124510012021-12-134310012021-12-134510012021-12-132310022021-12-144510012021-12-1423010022021-12-154510012021-12-1523.......找出连续3天及以上减少碳排放量在100以上的用户分析:遇到这类

  2. ruby - 引用具有指定索引的枚举器值 - 2

    假设我有一个可枚举对象enum,现在我想获取第三个项目。我知道一种通用方法是转换成数组,然后使用索引访问,如:enum.to_a[2]但这种方式会创建一个临时数组,效率可能很低。现在我使用:enum.each_with_index{|v,i|breakvifi==2}但这非常丑陋和多余。执行此操作最有效的方法是什么? 最佳答案 你可以使用take剥离前三个元素,然后剥离last从take给你的数组中获取第三个元素:third=enum.take(3).last如果您根本不想生成任何数组,那么也许:#Ifenumisn'tanEnum

  3. ruby-on-rails - Ruby on Rails,使用同名枚举的问题 - 2

    以下是我认为的一些下拉列表:'form-control')%>和'form-control')%>这是我的application_helper.rbdefget_advance_bookingret=[{:require_booking=>'No'},{:require_booking=>'Yes'}]enddefget_instant_bookingret=[{:instant_booking=>'No'},{:instant_booking=>'Yes'}]end但现在的问题是,在我的模型product.rb中,我无法设置具有相同名称的枚举:classProduct我收到的错误是您

  4. ruby-on-rails - i18n 与枚举 gem - 2

    我正在使用Enumerizegemhttps://github.com/brainspec/enumerize/它允许我以简单的形式使用漂亮的选择。并且此选择中的所有选项均已翻译。en:enumerize:user:sex:male:'Man'female:'Woman'所以,在我的表单中,我选择了变体“男人”和“女人”。当我用“男人”值保存记录时,我得到了“男性”值的性别属性。现在我想在显示页面上将该值显示为“Man”,但是=@user.sex输出为'male'而不是'Man' 最佳答案 我可能会使用.text方法(您可以通过使用

  5. ruby-on-rails - Ruby:如何在 fixture 中配置枚举? - 2

    给定这个类:classUser我想创建一个如下所示的fixture:testuser1:id:1username:sampermission::permission_staff我尝试了多种语法变体,但没有找到有效的方法。结果user.permission为nil或0。我知道enum是最近添加的。这可以做到吗? 最佳答案 根据enumdocs你可以像这样通过类引用可枚举的:User.permissions[:permission_staff]工厂只是ruby​​代码——所以他们应该能够以相同的方式访问值testuser1:id:1us

  6. arrays - Ruby 可枚举 - 查找最多 n 次匹配元素 - 2

    我有以下数组:arr=[1,3,2,5,2,4,2,2,4,4,2,2,4,2,1,5]我想要一个包含前三个奇数元素的数组。我知道我可以做到:arr.select(&:odd?).take(3)但我想避免遍历整个数组,而是在找到第三个匹配项后返回。我想出了以下解决方案,我相信它可以满足我的要求:my_arr.each_with_object([])do|el,memo|memo但是有没有更简单/惯用的方法来做到这一点? 最佳答案 使用lazyenumerator与Enumerable#lazy:arr.lazy.select(&:o

  7. ruby - 使用 Ransack 搜索枚举字段 - 2

    我有一个表,'jobs'和一个枚举字段'status'。status具有以下枚举集:enumstatus:[:draft,:active,:archived]使用ransack,我如何过滤表,比如说,所有事件记录? 最佳答案 你可以像这样在模型中声明自己的掠夺者:ransacker:status,formatter:proc{|v|statuses[v]}do|parent|parent.table[:status]end然后您可以使用默认的搜索语法_eq来检查相等性,如下所示:Model.ransack(status_eq:'ac

  8. Ruby 删除可枚举列表中的重复项 - 2

    ruby中有没有一个很好的方法来删除可枚举列表中的重复项(即拒绝等) 最佳答案 对于数组你可以使用uniq()方法a=["a","a","b","b","c"]a.uniq#=>["a","b","c"]所以如果你只是(1..10).to_a.uniq或%w{antbatcatant}.to_a.uniq因为无论如何,几乎所有您实现的方法都将作为Array类返回。 关于Ruby删除可枚举列表中的重复项,我们在StackOverflow上找到一个类似的问题: h

  9. 蓝桥杯备赛(二) - 2

    目录前言: 一、ASC分析代码实现二、 卡片分析代码实现三、 直线分析代码实现四、货物摆放分析代码实现小结:前言:  在刷题的过程中,发现蓝桥杯的题目和力扣的差别很大。让人有一种不一样的感觉,蓝桥杯题目偏向对于实际问题用编程去的解决,而力扣给人感觉很锻炼自己的编程思维,逻辑能力。两者结合去刷,相信会有不一样的收获。 一、ASC  已知大写字母A的ASCII码为65,请问大写字母L的ASCII码是多少?分析  这道题目看上去很简单,我们需确定自己计算的准确,所以我建议用编程去解决。代码实现publicclassTest8{publicstaticvoidmain(String[]args){Sy

  10. ruby - 跨线程共享枚举器 - 2

    我想从不同线程调用一个公共(public)枚举器。当我执行以下操作时,enum=(0..1000).to_enumt1=Thread.newdopenum.nextsleep(1)endt2=Thread.newdopenum.nextsleep(1)endt1.joint2.join它引发了一个错误:Fibercalledacrossthreads.当enum在从t1调用一次后从t2调用时。为什么Ruby设计为不允许跨线程调用枚举器(或纤程),以及是否有其他方法可以提供类似的功能?我猜测枚举器/纤程上的操作的原子性在这里是相关的,但我不完全确定。如果这是问题所在,那么在使用时独占锁定

随机推荐