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

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

文章目录

  • 1. 统计方形(数据加强版)
    • 1. 1 题目描述
    • 1.2 思路解释
    • 2.3 代码展示
  • 2. 烤鸡
    • 2.1 题目描述
    • 2.2 思路解释
    • 2.3 代码展示
  • 3. 烤鸡
    • 3.1 题目描述
    • 3.2 思路解释
    • 3.3 代码展示
  • 最后,感谢大家支持u (^ _ ^)

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
#include
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 
#include 
#include 
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 upd 2022.8.3:新增加二组 Hack 数据。

3.2 思路解释

  • 直接暴力

3.3 代码展示

#include
#include
#include
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")

你可能感兴趣的:(#,算法,蓝桥杯,算法,c++,暴力,枚举)