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