1 条题解

  • 0
    @ 2021-6-15 12:57:55

    C++ :

    /*
    2014/11/19 吴成兵于图书馆 
    	O157/Z782组合数学及应用P2 
    */
    #include<iostream>
    #include<cmath>
    using namespace std;
    int myc(int n,int r){
    	if(n==r)return 1;
    	if(n==r+1)
    //		return myc(n,n-r);
    		return n;
    	int sum=1;
    	for(int i=1;i<=r;i++)
    		sum*=(n-i+1)/(i);
    //	for(int i=0;i<r;i++)
    //		sum*=(n-i)/(i+1);
    	return sum;
    }
    int mya(int n,int r){
    	int sum=1;
    	for(int i=0;i<r;i++)
    		sum*=n-i;
    	return sum;
    }
    int f(int n){
    	if(n==0)return 1;
    	int s=n;
    	while(--n)s*=n;
    	return s; 
    } 
    int main(){
    //	freopen("in.txt","r",stdin);
    //	freopen("out.txt","w",stdout);
    	int n,r;
    //	while(cin>>n&&n){//[r,n]区间 1<r<n<=~3333
    {n=300;
    	r=1;//
    		int na=n/3,nb=n%3;
    		int ra=(r)/3,rb=(r)%3;
    //		cout<<"-------------\n";
    //		cout<<f(n)<<" "<<f(r)<<endl; 
    //		long long ll1=f(n)
    //		cout<<myc(n,r)<<" "<<mya(n,r)<<endl;
    ////		cout<<f(n)/f(n-r)/f(r)<<" "<<f(n)/f(n-r)<<endl;
    
    //		[1,n] && n%3==0
    //		cout<<3*myc(na,3)+(int)pow(na,3)<<endl;
    
    //		[1,n]
    		cout<<nb*myc(na+1,3)+(3-nb)*myc(na,3)+(int)pow(na+1,nb)*(int)pow(na,3-nb)<<endl;
    
    //		[r,n] 
    		int al,bl,cl;//求a,b,c长度,易错 
    		if(rb==0&&nb==0){al=bl=na-ra;cl=na-ra+1;}
    		if(rb==1&&nb==0){al=bl=cl=na-ra;}
    		if(rb==2&&nb==0){al=na-ra-1;bl=cl=na-ra;}
    		if(rb==0&&nb==1){al=na-ra+1;bl=na-ra;cl=na-ra+1;}
    		if(rb==1&&nb==1){al=na-ra+1;bl=na-ra;cl=na-ra;}
    		if(rb==2&&nb==1){al=bl=cl=na-ra;}
    		if(rb==0&&nb==2){al=bl=cl=na-ra+1;}
    		if(rb==1&&nb==2){al=bl=na-ra+1;cl=na-ra;}
    		if(rb==2&&nb==2){al=cl=na-ra;bl=na-ra+1;}
    //		cout<<myc(al,3)+myc(bl,3)+myc(cl,3)+al*bl*cl<<endl;
    //		cout<<"-------------\n";
    	}
    	return 0;
    }
    
    
    • 1

    信息

    ID
    794
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者