题目描述
解题思路
根据题目意思是求解b数组
首先求出c数组 (前缀乘)
再求出计算m % ci (根据公式可知需要这一步)
再计算 c[i - 1] ×b[i] (根据公式可以知道 (m % c[i]) - (m % c[i - 1]) = c[i - 1] ×b[i]
再计算计算 b[i]
代码实现
#include <iostream>
using namespace std;
const int N = 25;
int a[N], c[N], b[N];
int main()
{
int n, m;
cin >> n >> m;
c[0] = 1;
for (int i = 1; i <= n; i ++)
{
cin >> a[i];
c[i] = c[i - 1] * a[i]; //计算c[i]
}
for (int i = 1; i <= n; i ++)
{
b[i] = m % c[i]; //计算m % ci
}
for (int i = n; i >= 1; i --)
{
b[i] -= b[i - 1]; //计算 c[i - 1] ×b[i]
b[i] = b[i] / c[i - 1]; //计算 b[i]
}
for (int i = 1; i <= n; i ++)
{
cout << b[i] << ' ';
}
return 0;
}