ในปัญหานี้ เราได้รับตัวเลขสามตัว 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