Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 10196 Accepted Submission(s): 5951
sum = sum + i*f(i-1,n-1); f()为计算阶乘的一个函数
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<map> using namespace std; long long f(int m,int n)//一个计算阶乘的函数 { if(m==0) return 1; else { long long sum,num1=1,num2=1; for(int i=n; i>=n-m+1; i--) num1 = num1*i; for(int i=1; i<=m; i++) num2 = num2*i; sum = num1/num2; return sum; } } int main() { int t; while(~scanf("%d",&t)) { while(t--) { int n; scanf("%d",&n); long long sum=0; for(int i=1; i<=n; i++) sum = sum + i*f(i-1,n-1);//公式由来见解析 printf("%lld\n",sum); } } return 0; }
原文:http://www.cnblogs.com/l609929321/p/6550446.html