A. 上班
题意:输出x +y 和x + z的最小值
思路:直接比较即可
AC代码:
#include <iostream>
using namespace std;
int x, y, z;
int main()
{
cin >> x >> y >> z;
if(x + y >= x + z) cout << x + z;
else cout << x + y;
return 0;
}
B. 崇拜
题意:小于x难度的题目,崇拜值 - 1, 大于y难度的题目,崇拜值+ 3,找出崇拜值最大的排序题目顺序
思路:直接考虑是否有无大于y'难度的题。3 * 改题目数量即为答案
AC代码:
#include <iostream>
using namespace std;
const int N = 200010;
int n, x, y, sum;
int a[N];
int main()
{
cin >> n >> x >> y;
for(int i = 1; i <= n; i ++)
{
cin >> a[i];
}
for(int i = 1; i <= n; i ++)
{
if(a[i] > y)
{
sum += 3;
}
}
cout << sum;
return 0;
}
C. 方豆子
可以尝试用循环或者是递归的知识去解答,当时被这么多图给绕晕了,后面就摆烂了 0.0
题意:
一级好豆子: ****** ****** ****** ***... ***... ***...
一级坏豆子: ...... ...... ...... ...*** ...*** ...***
二级好豆子: 一级坏豆子 一级坏豆子 一级坏豆子 一级好豆子
二级坏豆子: 一级好豆子 一级好豆子 一级好豆子 一级坏豆子
x级好豆子: x-1级坏豆子 x-1级坏豆子 x-1级坏豆子 x-1级好豆子
x级坏豆子: x-1级好豆子 x-1级好豆子 x-1级好豆子 x-1级坏豆子
思路:先将一级好豆子给表示出来,因为后面都是它的变式,然后计算好i级好豆子,将其复制到右下角,然后取反,也就是取好豆子的坏豆子情况,并复制到左上、右上、左下,然后 i + 1 级好豆子对比 i 级好豆子,长和宽都是2倍。最后输出结果即可
AC代码:
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 5010;
int ans[N][N];
int main()
{
int n;
cin >> n;
// ans[i][j]是0,代表(i,j)是'.'
// ans[i][j]是1,代表(i,j)是'*'
// 一级好豆子
for (int i = 1; i <= 3; i ++)
{
for (int j = 1; j <= 6; j ++)
{
ans[i][j] = 1;
}
}
for (int i = 4; i <= 6; ++i)
{
for (int j = 1; j <= 3; j ++)
{
ans[i][j] = 1;
}
}
int m = 6;
for (int i = 2; i <= n; i ++)
{
// 计算i级好豆子
// 将复制到右下角
for (int j = 1; j <= m; j ++)
{
for (int k = 1; k <= m; k ++)
{
ans[j + m][k + m] = ans[j][k];
}
}
for (int j = m + 1; j <= m * 2; j ++)
{
for (int k = m + 1; k <= m * 2; k ++)
{
// 取反,并复制到左上、右上、左下
ans[j - m][k] = !ans[j][k];
ans[j][k - m] = !ans[j][k];
ans[j - m][k - m] = !ans[j][k];
}
}
// i+1级好豆子对比i级好豆子,长和宽都是2倍
m *= 2;
}
for (int i = 1; i <= m; i ++)
{
for (int j = 1; j <= m; j ++)
{
if (ans[i][j])
{
cout << "*";
}
else
{
cout << '.';
}
}
cout << endl;
}
return 0;
}