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

ผลรวมของจำนวนธรรมชาติ (มากถึง N) ซึ่งโมดูโลที่มี K ให้ผล R ใน C++


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