题目描述
有一些装有铀(用U表示)和铅(用L表示)的盒子,数量均足够多。要求把N个盒子放成一行,但至少有3个U放在一起,有多少种方法?
输入格式
第一行包含一个整数N(3<=N<=30)。
输出格式
输出一个整数表示方法数。
输入样例
4
输出样例
3
#include<bits/stdc++.h>
using namespace std;
int f(int n){
if(n<3){
return 0;
}
else if(n==3){
return 1;
}
else if(n==4){
return 3;
}
else{
return 2*f(n-1)+pow(2,n-4)-f(n-4);
}
}
int main(){
int n;
cin>>n;
cout<<f(n);
return 0;
}
#include "stdio.h"
int Fun(int n){
int m=0; //表示有几个装铀的盒子放一起
int sum=0; //表示方法数目
for(m=3;m<=n;m++){
sum += (n-m+1);
}
return sum;
}
int main(){
int n;
printf("请输入N:");
scanf("%d",&n);
printf("%d个盒子,共有%d总方法",n,Fun(n));
return 0;
}