题目
从官网获取即可
代码以及思路
#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 进行防范、
其余的内容比较简单,理解给出的式子即可