【第16届蓝桥杯C++C组】--- 2025图形
hello,小伙伴们,这是第16届蓝桥杯的第一道编程大题,我一开始拿到这道题目的时候,也想过很多方法,但是一直差了点意思,后面我换了一种思路,就巧妙地解决了这道题目,下面是我当时在考场的思路和方法,如果小伙伴们有更优更好的方法也可以分享分享~
我个人感觉这一届蓝桥杯考察的主要还是基础加一些巧妙地方法,前面的三道题目并不是很难,这道题目也还是考察 / 和 % 运算,我设置一个变量n = 5202,把2025倒着存储,这样每次%n就能拿到2025的第一位2,0, 2, 5,难点就是第二行开始,每行向左移动一个字符,下面就是我的代码,大家可以看看我是如何解决这个难点的~~
#include <iostream>
using namespace std;int n = 5202;
int tmp = 5202;//也保留一份 int h, w;int main()
{cin >> h >> w;for(int i = 1; i <= h; ++i){int k = i;//让k保留i while(k > 1)//当k>1时候,说明来到了第i+1行,那么我们每次要向左移动1位 {n /= 10;//向左移动一位 if(n == 0) n = tmp;//如果n == 0,我们就用tmp = n继续移动 k--;//如果k == 4,那么我们需要向左移动3位,用k来计算移动的位数 }for(int j = 1; j <= w; ++j){if(n == 0) n = tmp;cout << n % 10;n /= 10; }n = tmp;//这里有个细节,要让n重新回到2025,如果没有重新回到2025,那么n还是上一行的数据 cout << endl;}return 0;}