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

หาค่า (n^1 + n^2 + n^3 + n^4) mod 5 ใน C++

ในปัญหานี้ เราได้รับค่า 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`