C++ 中求自然數之和(至 N)且模 K 餘 R


在這個問題中,我們給定三個數字 N、K 和 R。我們的任務是建立一個程式來找到自然數之和(至 N)且模 K 餘 R。

我們將新增所有小於 N 且滿足以下條件的數字,i%K == R。

讓我們舉個例子來理解這個問題,

輸入 

N = 14, K = 4, R = 1

輸出 

28

解釋 − 所有小於 N 的數字,當除以 4 時餘數為 1 的數字是 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

更新於: 2020年8月6日

229 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.