【蓝桥杯试题】暴力枚举题型
创始人
2024-05-28 19:43:53
0

💃🏼 本人简介:男
👶🏼 年龄: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")

相关内容

热门资讯

OpenAI等六大AI巨头遭作... 界面新闻记者 | 宋佳楠 当地时间12月22日,两届普利策新闻奖得主约翰·卡雷鲁牵头的作家群体,向...
内需政策利好来袭,低估资产备受... 中央经济工作会议释放的内需刺激信号持续发酵,叠加A股年末日历效应的双重加持,易方达价值ETF(基金代...
三门峡湖滨区以物业矛盾纠纷化解... 大象新闻记者 许继彬 通讯员 马颖异 赵琳 城市更新涉及利益重大、主体多元,任何一起未妥善解决的物业...
杭州热电招标结果:杭州热电集团... 证券之星消息,根据天眼查APP-财产线索数据整理,杭州热电集团股份有限公司12月21日发布《杭州热电...
庄河市社保争议调解仲裁服务进驻... 中新网辽宁新闻12月23日电 近日,国家税务总局庄河市税务局社保争议调解仲裁服务窗口正式进驻市综治中...
快手最新公告:直播功能已逐步恢... 12月23日,快手发布最新公告,公告称,公司快手应用的直播功能于2025年12月22日22:00左右...
原创 《...  鲁网12月23日讯(记者 魏萱)12月22日,烟台市人民政府新闻办公室召开《烟台市海上交通安全条例...