logo

Keresse meg az első N természetes szám K modulójának összegét

Adott két egész szám N év K a feladat az első N természetes szám K modulo összegének megkeresése, azaz 1%K + 2%K + ..... + N%K.

Példák:  

  Input :   N = 10 and K = 2.   Output :   5 Sum = 1%2 + 2%2 + 3%2 + 4%2 + 5%2 + 6%2 + 7%2 + 8%2 + 9%2 + 10%2 = 1 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 1 + 0 = 5.
Recommended Practice Fordított kódolás Próbáld ki!

1. módszer:  



Iteráljon egy i változót 1-től N-ig, és adjon hozzá i%K-t. 

Az alábbiakban bemutatjuk ennek a megközelítésnek a megvalósítását:  

C++
// C++ program to find sum of // modulo K of first N natural numbers. #include    using namespace std; // Return sum of modulo K of // first N natural numbers. int findSum(int N int K) {  int ans = 0;  // Iterate from 1 to N &&  // evaluating and adding i % K.  for (int i = 1; i <= N; i++)  ans += (i % K);  return ans; } // Driver Program int main() {  int N = 10 K = 2;  cout << findSum(N K) << endl;  return 0; } 
Java
// Java program to find sum of modulo // K of first N natural numbers. import java.io.*; class GFG {  // Return sum of modulo K of  // first N natural numbers.  static int findSum(int N int K)  {  int ans = 0;  // Iterate from 1 to N && evaluating  // and adding i % K.  for (int i = 1; i <= N; i++)  ans += (i % K);  return ans;  }  // Driver program  static public void main(String[] args)  {  int N = 10 K = 2;  System.out.println(findSum(N K));  } } // This code is contributed by vt_m. 
Python3
# Python3 program to find sum  # of modulo K of first N  # natural numbers. # Return sum of modulo K of  # first N natural numbers. def findSum(N K): ans = 0; # Iterate from 1 to N && # evaluating and adding i % K. for i in range(1 N + 1): ans += (i % K); return ans; # Driver Code N = 10; K = 2; print(findSum(N K)); # This code is contributed by mits 
C#
// C# program to find sum of modulo // K of first N natural numbers. using System; class GFG {  // Return sum of modulo K of  // first N natural numbers.  static int findSum(int N int K)  {  int ans = 0;  // Iterate from 1 to N && evaluating  // and adding i % K.  for (int i = 1; i <= N; i++)  ans += (i % K);  return ans;  }  // Driver program  static public void Main()  {  int N = 10 K = 2;  Console.WriteLine(findSum(N K));  } } // This code is contributed by vt_m. 
PHP
 // PHP program to find sum  // of modulo K of first N  // natural numbers. // Return sum of modulo K of  // first N natural numbers. function findSum($N $K) { $ans = 0; // Iterate from 1 to N && // evaluating and adding i % K. for ($i = 1; $i <= $N; $i++) $ans += ($i % $K); return $ans; } // Driver Code $N = 10; $K = 2; echo findSum($N $K) 'n'; // This code is contributed by ajit ?> 
JavaScript
<script> // JavaScript program to find sum // of modulo K of first N natural // numbers.  // Return sum of modulo K of // first N natural numbers. function findSum(N K) {  let ans = 0;  // Iterate from 1 to N && evaluating  // and adding i % K.  for(let i = 1; i <= N; i++)  ans += (i % K);  return ans; } // Driver Code let N = 10 K = 2; document.write(findSum(N K)); // This code is contributed by code_hunt </script> 

Kimenet:  

5


Időbeli összetettség: ON).

Kiegészítő tér: O(1)

2. módszer:  
Ebben a módszerben két eset fordul elő.
1. eset: Mikor N< K minden i N >= i >= 1 számra i-t ad, ha K modulóval operálunk. Tehát a szükséges összeg az első N természetes szám N*(N+1)/2 összege lesz.
2. eset: Mikor N >= K akkor az 1-től K-ig terjedő egész számok természetes számsorozatban 1 2 3 ..... K - 1 0 eredményt adnak, ha K modulóval operálunk. Hasonlóan K + 1-től 2K-ig ugyanazt az eredményt adja. Tehát az ötlet az, hogy megszámoljuk, hányszor jelenik meg ez a sorozat, és megszorozzuk az első K - 1 természetes számok összegével. 

Az alábbiakban bemutatjuk ennek a megközelítésnek a megvalósítását:  

C++
// C++ program to find sum of modulo // K of first N natural numbers. #include    using namespace std; // Return sum of modulo K of // first N natural numbers. int findSum(int N int K) {  int ans = 0;  // Counting the number of times 1 2 ..  // K-1 0 sequence occurs.  int y = N / K;  // Finding the number of elements left which  // are incomplete of sequence Leads to Case 1 type.  int x = N % K;  // adding multiplication of number of  // times 1 2 .. K-1 0 sequence occurs  // and sum of first k natural number and sequence  // from case 1.  ans = (K * (K - 1) / 2) * y + (x * (x + 1)) / 2;  return ans; } // Driver program int main() {  int N = 10 K = 2;  cout << findSum(N K) << endl;  return 0; } 
Java
// Java program to find sum of modulo // K of first N natural numbers. import java.io.*; class GFG {  // Return sum of modulo K of  // first N natural numbers.  static int findSum(int N int K)  {  int ans = 0;  // Counting the number of times 1 2 ..  // K-1 0 sequence occurs.  int y = N / K;  // Finding the number of elements left which  // are incomplete of sequence Leads to Case 1 type.  int x = N % K;  // adding multiplication of number of times  // 1 2 .. K-1 0 sequence occurs and sum  // of first k natural number and sequence  // from case 1.  ans = (K * (K - 1) / 2) * y + (x * (x + 1)) / 2;  return ans;  }  // Driver program  static public void main(String[] args)  {  int N = 10 K = 2;  System.out.println(findSum(N K));  } } // This Code is contributed by vt_m. 
Python3
# Python3 program to find sum of modulo # K of first N natural numbers. # Return sum of modulo K of # first N natural numbers. def findSum(N K): ans = 0; # Counting the number of times # 1 2 .. K-1 0 sequence occurs. y = N / K; # Finding the number of elements # left which are incomplete of  # sequence Leads to Case 1 type. x = N % K; # adding multiplication of number # of times 1 2 .. K-1 0  # sequence occurs and sum of  # first k natural number and  # sequence from case 1. ans = ((K * (K - 1) / 2) * y + (x * (x + 1)) / 2); return int(ans); # Driver Code N = 10; K = 2; print(findSum(N K)); # This code is contributed by mits 
C#
// C# program to find sum of modulo // K of first N natural numbers. using System; class GFG {  // Return sum of modulo K of  // first N natural numbers.  static int findSum(int N int K)  {  int ans = 0;  // Counting the number of times 1 2 ..  // K-1 0 sequence occurs.  int y = N / K;  // Finding the number of elements left which  // are incomplete of sequence Leads to Case 1 type.  int x = N % K;  // adding multiplication of number of times  // 1 2 .. K-1 0 sequence occurs and sum  // of first k natural number and sequence  // from case 1.  ans = (K * (K - 1) / 2) * y + (x * (x + 1)) / 2;  return ans;  }  // Driver program  static public void Main()  {  int N = 10 K = 2;  Console.WriteLine(findSum(N K));  } } // This code is contributed by vt_m. 
PHP
 // PHP program to find sum of modulo // K of first N natural numbers. // Return sum of modulo K of // first N natural numbers. function findSum($N $K) { $ans = 0; // Counting the number of times // 1 2 .. K-1 0 sequence occurs. $y = $N / $K; // Finding the number of elements // left which are incomplete of  // sequence Leads to Case 1 type. $x = $N % $K; // adding multiplication of number // of times 1 2 .. K-1 0  // sequence occurs and sum of  // first k natural number and  // sequence from case 1. $ans = ($K * ($K - 1) / 2) * $y + ($x * ($x + 1)) / 2; return $ans; } // Driver program $N = 10; $K = 2; echo findSum($N $K) ; // This code is contributed by anuj_67. ?> 
JavaScript
<script> // Javascript program to find sum of modulo // K of first N natural numbers. // Return sum of modulo K of // first N natural numbers. function findSum(N K) {  let ans = 0;  // Counting the number of times  // 1 2 .. K-1 0 sequence occurs.  let y = N / K;  // Finding the number of elements  // left which are incomplete of  // sequence Leads to Case 1 type.  let x = N % K;  // adding multiplication of number  // of times 1 2 .. K-1 0  // sequence occurs and sum of  // first k natural number and  // sequence from case 1.  ans = (K * (K - 1) / 2) * y +   (x * (x + 1)) / 2;  return ans; } // Driver code let N = 10;  let K = 2; document.write(findSum(N K)); // This code is contributed by _saurabh_jaiswal </script> 

Kimenet:  

5

Időbeli összetettség: O(1).

Kiegészítő tér: O(1)


 

Kvíz létrehozása