1.N的阶乘
#include<iostream>
using namespace std;
long long factorial(int n){
if(n==0||n==1)return 1;
else{
return n*factorial(n-1);
}
}
int main(){
long long n;
while(cin>>n){
cout<<factorial(n)<<endl;
}
return 0;
}
2.汉诺塔III
#include<iostream>
using namespace std;
long long func(int n){//汉诺塔问题
if(n==1)return 2;
else{
return 3*func(n-1)+2;
}
}
int main(){
int n;
while(cin>>n){
cout<<func(n)<<endl;
}
}
3.杨辉三角形
#include<iostream>
#include<vector>
using namespace std;
vector<int> getNextLine(vector<int> vec){
vector<int> ans;
ans.push_back(1);
for(int i=1;i<vec.size();i++){
ans.push_back(vec[i]+vec[i-1]);
}
ans.push_back(1);
return ans;
}
void printVector( vector<int> vec){
for(int i=0;i<vec.size();i++)
cout<<vec[i]<<" ";
cout<<endl;
}
int main(){
int n;
while(cin>>n){
vector<int> vec(2,1);
if(n==2){
for(int i=0;i<vec.size();i++)
cout<<vec[i]<<" ";
cout<<endl;
break;
}
else
for(int i=2;i<=n;i++){
printVector(vec);
// vec.clear();
vec=getNextLine(vec);
}
}
return 0;
}
4.全排列
#include<iostream>
#include<cstring>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxn=7;
int hashTable[maxn]={false};
char P[maxn];//存储全排列的结果
void generateP(int index,int n,string str){
if(index==n)
{
for(int i=0;i<n;i++)
cout<<P[i];
cout<<endl;
return;
}
else{
for(int i=0;i<n;i++){
if(hashTable[i]==false){
P[index]=str[i];
hashTable[i]=true;
generateP(index+1,n,str);
hashTable[i]=false;
}
}
}
}
int main(int argc,char const *argv[]){
string str;
while(cin>>str){
int n=str.size();
sort(str.begin(),str.end());
generateP(0,n,str);
cout<<endl;
}
return 0;
}
5.Fibonacci
#include<iostream>
using namespace std;
int main(){
int n;
while(cin>>n){
if(n==0)cout<<0<<endl;
else if(n==1)cout<<1<<endl;
else {
int first=0;
int second=1;
for(int i=1;i<n;i++){
int temp=second;
second=first+second;
first=temp;
}
cout<<second<<endl;
}
}
return 0;
}
6.二叉树
#include<iostream>
using namespace std;
int childNum(int m,int n){
if(m>=n)return 0;
else{
int res=0;
if(m*2<=n)res++;
if(m*2+1<=n)res++;
return res+childNum(m*2,n)+childNum(m*2+1,n);
}
}
int main(){
int m,n;
while(cin>>m>>n){
if(m==0&&n==0)
break;
else{
cout<<childNum(m,n)+1;
}
}
return 0;
}
7.2的幂次方
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
vector<int> v;
string gcg(int m){
string str;
int idx=0;
if(m==0)return "0";
if(m==2)return "2";
while(m!=0){
if(m>=v[idx]){
m-=v[idx];
if(idx==13){
str+="+2";
}else
str+="+2("+gcg(14-idx)+")";
}
idx++;
}
return str.substr(1);
}
int main(){
v.clear();
for(int i=0;i<=14;i++){
v.push_back(pow(2,14-i));
}
int m;
while(cin>>m){
cout<<gcg(m)<<endl;
}
return 0;
}