排列组合公式计算 |
||
题目描述实现以下函数: long my_function(int m, int n); 用来计算下面数学式的值,并且将计算结果返回: 输入格式实现函数 my_function (notice:请不要改动函数头)
输出格式测试平台会调用你实现的函数,你只需要返回正确的计算结果即可,放回结果的规则如下: 1, 如果平台提供的m, n 的值是不合法的,例如 m == 2, n == 1, 那么返回结果-1; 2, 如果平台调用函数是合法的,那么放回数学式的值,例如 m == 0, n == 0时,那么你的函数需要返回 1. |
1 // Problem#: 6382 2 // Submission#: 1634071 3 // The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License 4 // URI: http://creativecommons.org/licenses/by-nc-sa/3.0/ 5 // All Copyright reserved by Informatic Lab of Sun Yat-sen University 6 7 #include <stdio.h> 8 9 long my_function(int m, int n); 10 11 int main() 12 { 13 int m , n ; 14 int sum; 15 16 scanf ("%d %d",&m,&n) ; 17 sum = my_function(m,n) ; 18 19 printf ("%d\n",sum); 20 21 return 0; 22 } 23 long my_function(int m, int n) 24 { 25 int i ; 26 double a=1 , b=1 , c=1 , d; 27 if ( m > n) 28 return -1; 29 else 30 if ( m < 0 || n < 0) 31 return -1; 32 33 else 34 if ( m >= 0 && n >= 0 && n >= m) 35 { 36 for ( i=1 ; i <= m ; i++) 37 { 38 a=a*i; 39 } 40 for ( i=1 ; i<= n ; i++) 41 { 42 b=b*i; 43 } 44 for ( i=1 ; i<= (n-m); i++) 45 { 46 c=c*i; 47 } 48 d=b/(a*c); 49 return d ; 50 } 51 }
呵呵呵呵呵呵 这道题坑死爹!!!!!数据类型问题 折磨了我好多小时!!! 就是个数据的长度问题!!!