ในปัญหานี้ เราได้รับตัวเลขสามตัว N, K และ R หน้าที่ของเราคือสร้างโปรแกรมเพื่อค้นหาผลรวมของจำนวนธรรมชาติ (มากถึง N) ซึ่งโมดูโลมี K ผลตอบแทน R.
เราจะบวกตัวเลขทั้งหมดที่น้อยกว่า N ที่ตรงตามเงื่อนไขต่อไปนี้ i%K ==R.
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
ป้อนข้อมูล
N = 14, K = 4, R = 1
ผลผลิต
28
คำอธิบาย − ตัวเลขทั้งหมดที่น้อยกว่า N ซึ่งให้ 1 เป็นเศษเหลือเมื่อหารด้วย 4 คือ 1, 5, 9, 13
ในการแก้ปัญหานี้ เราจะวนซ้ำจาก R ถึง N และเพิ่มค่าโดย K เพื่อให้เราได้จำนวนคู่ที่ตรงตามเงื่อนไขที่กำหนด แล้วบวกเข้าในผลรวม
ในที่นี้ เราอาจเคยชินกับการวนซ้ำปกติเช่น 1 เป็นช่วง แต่เราเคยใช้มาก่อนจะใช้เวลาน้อยลง
ตัวอย่าง
โปรแกรมเพื่อแสดงวิธีแก้ปัญหา
#include <iostream>
using namespace std;
int CalcSumofRem(int N, int K, int R){
int sum = 0;
for (int i = R; i <= N; i+= K) {
if (i % K == R)
sum += i;
}
return sum;
}
int main(){
int N = 14, K = 4, R = 1;
cout<<"Sum of natural numbers (up to "<<N<<") whose modulo with "<<K<<" yields "<<R<<" is "<<CalcSumofRem(N, K, R);
return 0;
} ผลลัพธ์
Sum of natural numbers (up to 14) whose modulo with 4 yields 1 is 28