一、打印大X
题目链接:打印大X - 蓝桥云课 (lanqiao.cn)
题目要求:
小明希望用星号拼凑,打印出一个大 X,他要求能够控制笔画的宽度和整个字的高度。
为了便于比对空格,所有的空白位置都以句点符来代替。
解题思路:
这是一个简单的模拟题,我们按照题意模拟即可
#include <bits/stdc++.h> using namespace std; int n,m; int main() { cin>>m>>n; int s=m+n-1; int s1=1,s2=m+n-1; for(int i=1;i<=n;i++) { for(int j=1;j<=s;j++) { if((j<s1+m&&j>=s1)||(j<=s2&&j>s2-m)) { cout<<'*'; } else { cout<<'.'; } } s1++; s2--; cout<<endl; } return 0; }
二、分巧克力
题目链接:分巧克力 - 蓝桥云课 (lanqiao.cn)
题目要求:
儿童节那天有 K 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。
小明一共有 N 块巧克力,其中第 i 块是 Hi×Wi 的方格组成的长方形。为了公平起见,
小明需要从这 N 块巧克力中切出 K 块巧克力分给小朋友们。切出的巧克力需要满足:
1.形状是正方形,边长是整数;
2.大小相同;
例如一块 6x5 的巧克力可以切出 6 块 2x2 的巧克力或者 2 块 3x3 的巧克力。
当然小朋友们都希望得到的巧克力尽可能大,你能帮小明计算出最大的边长是多少么?
解题思路:
二分,每次判断巧克力分出来是否合适。
#include <bits/stdc++.h> using namespace std; const int N = 1e5+10; int n,k; int h[N]; int w[N]; bool pd(int d) { int num=0; for(int i=0;i<n;i++) { num += (h[i]/d)*(w[i]/d); } if(num>=k) { return true; } else { return false; } } int main() { cin>>n>>k; for(int i=0;i<n;i++) { cin>>h[i]>>w[i]; } int l = 1,r = N; while(l<r) { int mid = (l+r+1)/2; if(pd(mid)) { l = mid; } else { r = mid-1; } } cout << l; return 0; }
最后的话
距离蓝桥杯还有三天时间,今天明天的题目就不多了,各位一定要复习一下各种题型,放松放松,加油!