ในบทช่วยสอนนี้ เราจะแก้ปัญหาต่อไปนี้
ได้รับจำนวนเต็ม n เราต้องหา (1n + 2n + 3n + 4n) % 5
ตัวเลข (1n + 2n + 3n + 4n) จะใหญ่มากถ้า n ใหญ่ มันไม่สามารถใส่ใน long integers ได้เช่นกัน ดังนั้นเราต้องหาวิธีแก้ปัญหาแบบอื่น
ถ้าคุณแก้สมการสำหรับตัวเลข 1, 2, 3, 4, 5, 6, 7, 8, 9 คุณจะได้ 10, 30, 100, 354, 1300, 4890, 18700, 72354, 282340 ตามลำดับ
สังเกตผลลัพธ์ของสมการอย่างละเอียด คุณจะพบว่าตัวเลขหลักสุดท้ายของผลลัพธ์สมการซ้ำกันทุก 4 ตัวเลข นี่คือ periodicity ของสมการ
โดยไม่ต้องคำนวณสมการจริง เราสามารถบอกได้ว่า
ถ้า n % 4 == 0 แล้ว (1n + 2n + 3n + 4n) % 5 จะเป็น 4 มิฉะนั้น 0
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
int findSequenceMod5(int n) {
return (n % 4) ? 0 : 4;
}
int main() {
int n = 343;
cout << findSequenceMod5(n) << endl;
return 0;
}
ผลลัพธ์
ถ้าคุณรันโค้ดด้านบน คุณจะได้ผลลัพธ์ดังนี้
0
สรุป
หากคุณมีคำถามในบทช่วยสอนนี้ ให้ระบุในส่วนความคิดเห็น