Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหา k หลักสุดท้ายในผลิตภัณฑ์ของหมายเลขอาร์เรย์ใน C++


สมมติว่าเรามีอาร์เรย์ขององค์ประกอบ n ตัวที่เรียกว่า A เรามีตัวเลข k อีกจำนวนหนึ่ง งานของเราคือค้นหา k หลักสุดท้ายของผลคูณขององค์ประกอบในอาร์เรย์ A สมมติว่า 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