给定N个分数的分子和分母。其任务是求N分数的乘积,并以简化形式输出答案。 例如:
null
Input : N = 3 num[] = { 1, 2, 5 } den[] = { 2, 1, 6 }Output : 5/6Product of 1/2 * 2/1 * 5/6 is 10/12.Reduced form of 10/12 is 5/6.Input : N = 4 num[] = { 1, 2, 5, 9 } den[] = { 2, 1, 6, 27 }Output : 5/18
这个想法是在一个变量中找到分子的乘积,比如new_num。现在,在另一个变量中找到分母的乘积,比如new_den。 现在,为了找到简化形式的答案,找到new_num和new_den的最大公约数,并将new_num和new_den除以计算出的GCD。 以下是该方法的实施情况:
C++
// CPP program to find product of N // fractions in reduced form. #include <bits/stdc++.h> using namespace std; // Function to return gcd of a and b int gcd( int a, int b) { if (a == 0) return b; return gcd(b % a, a); } // Print the Product of N fraction in Reduced Form. void productReduce( int n, int num[], int den[]) { int new_num = 1, new_den = 1; // finding the product of all N // numerators and denominators. for ( int i = 0; i < n; i++) { new_num *= num[i]; new_den *= den[i]; } // Finding GCD of new numerator and // denominator int GCD = gcd(new_num, new_den); // Converting into reduced form. new_num /= GCD; new_den /= GCD; cout << new_num << "/" << new_den << endl; } // Driven Program int main() { int n = 3; int num[] = { 1, 2, 5 }; int den[] = { 2, 1, 6 }; productReduce(n, num, den); return 0; } |
JAVA
// Java program to find product of N // fractions in reduced form. import java.io.*; class GFG { // Function to return gcd of a and b static int gcd( int a, int b) { if (a == 0 ) return b; return gcd(b % a, a); } // Print the Product of N fraction in // Reduced Form. static void productReduce( int n, int num[], int den[]) { int new_num = 1 , new_den = 1 ; // finding the product of all N // numerators and denominators. for ( int i = 0 ; i < n; i++) { new_num *= num[i]; new_den *= den[i]; } // Finding GCD of new numerator and // denominator int GCD = gcd(new_num, new_den); // Converting into reduced form. new_num /= GCD; new_den /= GCD; System.out.println(new_num + "/" +new_den); } // Driven Program public static void main (String[] args) { int n = 3 ; int num[] = { 1 , 2 , 5 }; int den[] = { 2 , 1 , 6 }; productReduce(n, num, den); } } //This code is contributed by vt_m. |
Python3
# Python3 program to find # product of N fractions # in reduced form. # Function to return # gcd of a and b def gcd(a, b): if (a = = 0 ): return b; return gcd(b % a, a); # Print the Product of N # fraction in Reduced Form. def productReduce(n, num, den): new_num = 1 ; new_den = 1 ; # finding the product # of all N numerators # and denominators. for i in range (n): new_num = new_num * num[i]; new_den = new_den * den[i]; # Finding GCD of # new numerator # and denominator GCD = gcd(new_num, new_den); # Converting into # reduced form. new_num = new_num / GCD; new_den = new_den / GCD; print ( int (new_num), "/" , int (new_den)); # Driver Code n = 3 ; num = [ 1 , 2 , 5 ]; den = [ 2 , 1 , 6 ]; productReduce(n, num, den); # This code is contributed # by mits |
C#
// C# program to find product of N // fractions in reduced form. using System; class GFG { // Function to return gcd of a and b static int gcd( int a, int b) { if (a == 0) return b; return gcd(b % a, a); } // Print the Product of N fraction in // Reduced Form. static void productReduce( int n, int []num, int []den) { int new_num = 1, new_den = 1; // finding the product of all N // numerators and denominators. for ( int i = 0; i < n; i++) { new_num *= num[i]; new_den *= den[i]; } // Finding GCD of new numerator and // denominator int GCD = gcd(new_num, new_den); // Converting into reduced form. new_num /= GCD; new_den /= GCD; Console.WriteLine(new_num + "/" +new_den); } // Driven Program public static void Main () { int n = 3; int []num = { 1, 2, 5 }; int []den = { 2, 1, 6 }; productReduce(n, num, den); } } //This code is contributed by vt_m. |
PHP
<?php // PHP program to find product of N // fractions in reduced form. // Function to return // gcd of a and b function gcd( $a , $b ) { if ( $a == 0) return $b ; return gcd( $b % $a , $a ); } // Print the Product of N // fraction in Reduced Form. function productReduce( $n , $num , $den ) { $new_num = 1; $new_den = 1; // finding the product of all N // numerators and denominators. for ( $i = 0; $i < $n ; $i ++) { $new_num *= $num [ $i ]; $new_den *= $den [ $i ]; } // Finding GCD of new // numerator and denominator $GCD = gcd( $new_num , $new_den ); // Converting into reduced form. $new_num /= $GCD ; $new_den /= $GCD ; echo $new_num , "/" , $new_den , "" ; } // Driver Code $n = 3; $num = array (1, 2, 5); $den = array (2, 1, 6); productReduce( $n , $num , $den ); // This code is contributed by ajit ?> |
Javascript
<script> // JavaScript program to find product of N // fractions in reduced form. // Function to return gcd of a and b function gcd( a, b) { if (a == 0) return b; return gcd(b % a, a); } // Print the Product of N fraction in Reduced Form. function productReduce( n, num , den) { let new_num = 1, new_den = 1; // finding the product of all N // numerators and denominators. for (let i = 0; i < n; i++) { new_num *= num[i]; new_den *= den[i]; } // Finding GCD of new numerator and // denominator let GCD = gcd(new_num, new_den); // Converting into reduced form. new_num /= GCD; new_den /= GCD; document.write( new_num + "/" + new_den); } // Driven Program let n = 3; let num = [ 1, 2, 5 ]; let den = [ 2, 1, 6 ]; productReduce(n, num, den); // This code contributed by aashish1995 </script> |
输出:
5/6
如何避免溢出? 上述解决方案会导致大量数据溢出。我们可以先避免溢出 寻找主要因素 所有的分子和分母。一旦我们找到素数因子,我们就可以取消常见的素数因子。 注: 当你被要求以{P imes{Q}^{-1}的形式表示答案时。 对于这些问题,首先将分子和分母转换为可约化形式P/Q,如上所述。然后,找到 模乘逆 关于质数m(通常为10^9+7)的Q的函数。在找到Q的模乘逆之后,将其与P相乘,并取给定素数m的模,这将给出我们所需的输出。 //谢谢 瓦伊布兹克 感谢你提出这种情况。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END