רעכענען NCR% פּ  


שוועריקייט לעוועל גרינג
אָפט געבעטן אין אַקסענטורע קאַדענס ינדיאַ קאָמלי מעדיע אָלאַ קאַבס קוואַדראַט
דינאַמיש פּראָגראַממינג מאַט

פּראָבלעם סטאַטעמענט  

די פּראָבלעם "צונויפרעכענען NCR% פּ" שטאַטן אַז איר דאַרפֿן צו געפֿינען בינאָמיאַל קאָואַפישאַנט מאָדולאָ פּ. איר מוזן ערשטער וויסן וועגן די בינאָמיאַל קאָואַפישאַנט. מיר האָבן שוין דיסקאַסט אַז אין אַ פריערדיקן פּאָסטן. איר קענט קאָנטראָלירן דאָס דאָ.

בייַשפּיל  

n = 5, r = 2, p = 6
4

דערקלערונג

nCr = 5C2 = 10
nCr% פּ = 10% 6 = 4
אַזוי, מיר קאַלקיאַלייטיד 5 ק 2 ניצן די פאָרמולע פון ​​די בינאָמיאַל קאָואַפישאַנט. דערנאָך גענומען די מאָדולאָ איבער די ווערט.

רעכענען NCR% פּ

צוגאַנג  

אין די פריערדיקע פּאָסטן וועגן די כעזשבן פון די בינאָמיאַל קאָואַפישאַנט. וואָס מיר טאָן איז געווען ערשטער קאַמפּיוטאַד די וואַלועס וואָס זענען פארלאנגט צו סאָלווע NCR. מיר געוויינט דינאַמיש פּראָגראַממינג צו סאָלווע די פּראָבלעם, אָבער דעמאָלט מיר נאָר קאַלקיאַלייטינג די ווערט פון nCr. ניט די בינאָמיאַל קאָואַפישאַנט מאָדולאָ עטלעכע נומער פּ. די נאַיוו צוגאַנג איז צו ערשטער רעכענען די בינאָמיאַל קאָואַפישאַנט און נעמען די מאָדולאָ פּ. אָבער, עס איז אַ באַגרענעצונג אויף דעם כעזשבן. איר קענען נישט רעכענען בינאָמיאַל קאָואַפישאַנץ פֿאַר גרויס נומערן, ווייַל דאָס וועט רעזולטאַט אין אַ לויפן. אַזוי מיר דאַרפֿן צו געפֿינען אַ וועג וואָס קענען פּראָדוצירן אַ ריכטיק רעזולטאַט אָן די ינטאַדזשער לויפן.

איין זאַך וואָס מיר קענען טאָן איז צו האַלטן די מאָדולוס בשעת די כעזשבן פון אונדזער בינאָמיאַל קאָואַפישאַנט. דער בלויז ענדערונג אין דער לייזונג פון דעם פריערדיקן פּאָסטן איז אַז מיר וועלן נעמען מאָדולוס בעשאַס די חשבונות. אזוי אונדזער רעקורסיווע פאָרמולע וועט טוישן אַ ביסל, אָבער די טראַנזישאַנז בלייבן די זעלבע. און דער איצטיקער בינאָמיאַל קאָואַפישאַנט איז אָפענגיק אויף די זעלבע שטאַטן ווי פריער.

זע אויך
לאָנגעסט ינקריסינג קאָנסעקוטיווע סאַבסאַקוואַנס

קאָדעקס  

C ++ קאָד צו רעכענען NCR% פּ

#include<bits/stdc++.h>
using namespace std;
// this function just makes our pascal triangle
int computeBinomialCoefficientsModuloP(int n, int r, int p)
{
  int C[r+1];
    C[0] = 1;
    for (int i = 0; i <= n; i++)
    {
        // since the recursive formula is dependent on current and previous binomial coefficient on i
        // if we had run a forward loop our algorithm would have not given us a correct result
        for (int j = min(i, r); j >0 ; j--)
        {
            C[j] = (C[j - 1] + C[j])%p; // use recursive formula
        }
    }
    return C[r];
}

int main()
{
    int n,k,p;cin>>n>>k>>p;
    // here n & k do not satisfy the properties of binomial coefficient
    // then we will answer it as 0
    int val = computeBinomialCoefficientsModuloP(n, k, p);
    if(val != 0)
      cout<<val<<endl;
    else
      cout<<0<<endl;
}
5 2 4
2

דזשאַוואַ קאָד צו רעכענען NCR% פּ

import java.util.*;
class Main{
  // this function just makes our pascal triangle
  static int computeBinomialCoefficientsModuloP(int n, int r, int p) 
  {
  	int C[] = new int[r+1];
  	C[0] = 1;
    for (int i = 0; i <= n; i++) 
    { 
      // since the recursive formula is dependent on current and previous binomial coefficient on i
      // if we had run a forward loop our algorithm would have not given us a correct result 
      for (int j = Math.min(i, r); j >0 ; j--) 
      {
          C[j] = (C[j - 1] + C[j])%p; // use recursive formula
      }
    } 
    return C[r]; 
  }
  
  public static void main(String[] args)
  {
      Scanner sc = new Scanner(System.in);
      // here n & k do not satisfy the propertoes of binomial coefficient
      // then we will answer it as 0
      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int val = computeBinomialCoefficientsModuloP(n, k, p);
      if(val != 0)
        System.out.println(val);    
      else
        System.out.println(0);
   }
}
5 2 4
2

קאַמפּלעקסיטי אַנאַליסיס  

צייט קאַמפּלעקסיטי

אָ (N * ר), וווּ N און R זענען די ינפּוץ געגעבן. דאָס איז ווייַל ווען מיר קאַלקיאַלייטיד אונדזער בינאָמיאַל קאָואַפישאַנט, מיר האָבן אַ ויסווייניקסט שלייף און איין ינער שלייף.

זע אויך
שרייב קאָד צו באַשליסן אויב צוויי ביימער זענען יידעניקאַל

ספעיס קאַמפּלעקסיטי

אָ (ר)זינט מיר האָבן געמאכט אַ מענגע צו קראָם די ינטערמידייט וואַלועס, אַזוי די פּלאַץ קאַמפּלעקסיטי איז לינעאַר.