假设我们有一个由n个元素组成的数组,称为A。我们还有另一个数字k。我们的任务是查找数组A中元素乘积的最后k位。假设A = [15、22、13、19、17],则乘积为1385670,最后k = 3位为670。
为了解决这个问题,我们将模10 k下的数字相乘。
#include<iostream> #include<cmath> using namespace std; int displayLastKNumbers(int array[], int n, int k) { int mod = (int)pow(10, k); int mul = array[0] % mod; for (int i = 1; i < n; i++) { array[i] = array[i] % mod; mul = (array[i] * mul) % mod; } return mul; } int main() { int a[] = {15, 22, 13, 19, 17}; int k = 3; int n = sizeof(a) / sizeof(a[0]); cout <<"Last K digits are: " << displayLastKNumbers(a, n, k); }
输出结果
Last K digits are: 670