CCF 202209-1 如此编码

题目

从官网获取即可

代码以及思路

#include <iostream>
#include <cstdio>
#include <vector>

using namespace std;

typedef long long int mint;

int main()
{
    mint n, m, ai;
    scanf("%lld %lld", &n, &m);
    vector<mint> c_pack;
    vector<mint> a_pack;
    vector<mint> b_pack;

    mint temp_c = 1;
    c_pack.push_back(1);
    for (int i = 0; i < n; i++)
    {
        scanf("%lld", &ai);
        // a_pack[i] = ai;
        a_pack.push_back(ai);
        temp_c *= ai;
        // c_pack[i + 1] = temp_c;
        c_pack.push_back(temp_c);
    }

    mint temp_sum = 0;
    mint temp_brige = 0;
    for (int i = 0; i < n; i++)
    {
        temp_brige = m % c_pack[i+1] - temp_sum;
        mint t = temp_brige / c_pack[i];
        b_pack.push_back(t);
        temp_sum += t * c_pack[i];
    }

    for (int i = 0; i < n; i++)
    {
        cout << b_pack[i] << " ";
    }

    return 0;
}

思路:
用三个不同的容器对需要储存的变量进行管理,此处可以先分配空间而不需要直接push_back,还需要注意的是c的范围 ,可以使用 long long int 进行防范、
其余的内容比较简单,理解给出的式子即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值