I 我的矩形

在读取数字的时候同时输出,输出数量为y的倍数时输出回车即可。

代码:

#include<stdio.h>
int main()
{
	int n,x,y;
    scanf("%d%d%d",&n,&x,&y);
    for(int i=1;i<=n;i++)
    {
        int x;
        scanf("%d",&x);
        printf("%05d ",x);
        if(i%y==0)printf("\n");
    }
	return 0;
}

#include<bits/stdc++.h>
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n,x,y;
    cin>>n>>x>>y;
    for(int i=1;i<=n;i++)
    {
        int x;
        cin>>x;
        cout<<setw(5) <<setfill('0')<<x<<" ";
        if(i%y==0)cout<<endl;
    }
    return 0;
}

J 堆栈的奇妙世界

按照题目描述进行操作即可, 注意记录数列的长度变化。

#include <stdio.h>
int a[10005], idx;
int main()
{
    int n;
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        int op;
        scanf("%d", &op);
        if (op == 1) {
            a[idx] = 1;
            idx++;
        } else if (op == 2) {
            a[idx] = a[idx - 1];
            idx++;
        } else {
            a[idx - 2] += a[idx - 1];
            idx--;
        }
    }
    for (int i = 0; i < idx; i++) 
        printf("%d ", a[i]);
    return 0;
}
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10, M = 20, mod = 998244353;
 
int main()
{
    stack<int> sk;
    int n;
    cin >> n;
    while(n--)
    {
        int x;
        cin >> x;
        if(x==1)
            sk.push(1);
        else if(x==2)
            sk.push(sk.top());
        else
        {
            int h = sk.top();
            sk.pop();
            h += sk.top();
            sk.pop();
            sk.push(h);
        }
    }
    vector<int> v;
    while(!sk.empty())
    {
        v.push_back(sk.top());
        sk.pop();
    }
    reverse(v.begin(), v.end());
    for(auto it:v)
        cout << it << " ";
    return 0;
}