ในปัญหานี้ เราได้รับค่า n งานของเราคือการหาค่า (n1 + n2 + n3 + n4) mod 5
ตัวอย่างเพื่อเข้าใจปัญหา
Input: n = 5 Output: 0
(5 + 25 + 125 + 625) % 5 = 780 % 5 = 0
วิธีที่ 1: คำนวณโดยตรง (อาจ overflow ได้)
#include <iostream>
using namespace std;
int findMod5Val(int n) {
int val = (n + (n*n) + (n*n*n) + (n*n*n*n));
return val % 5;
}
วิธีที่ 2: ใช้สูตรทางคณิตศาสตร์ (แนะนำ)
จัดรูปสมการ: f(n) = n + n2 + n3 + n4 = n(n+1)(n2+1)
จากนั้น f(n) % 5 จะมีค่าเป็น 0 หรือ 4 เท่านั้น:
- ถ้า n % 5 == 1 → f(n) % 5 = 4
- กรณีอื่น → f(n) % 5 = 0
#include <iostream>
using namespace std;
int findMod5Val(int n) {
if (n % 5 == 1) return 4; // หมายเหตุ: โค้ดต้นฉบับมี bug เขียน n%4
return 0;
}
int main() {
int n = 65;
cout << "For N = " << n << ", the value is " << findMod5Val(n);
return 0;
}
ผลลัพธ์
For N = 65, the value of (n^1 + n^2 + n^3 + n^4)%5 is 4
หมายเหตุ: โค้ดต้นฉบับมีข้อผิดพลาดที่ตรวจสอบ `n % 4 == 1` ควรเป็น `n % 5 == 1`