全排列:
/*
* 1.cpp
*
* Created on: 2017年8月31日
* Author: Administrator
*/
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
void perm(string s, int k){
int n = s.length();
if (k == n-1) {
cout<< s <<endl;
} else {
for (int i = k; i < n; ++i) {
swap(s[i],s[k]);
perm(s,k+1);
}
}
}
int main(){
string s;
cin>>s;
perm(s,0);
return 0 ;
}
2的幂次方表示:
/*
* 1.cpp
*
* Created on: 2017年8月31日
* Author: Administrator
*/
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
void print(int n){
if(n == 0) return ;
if(n == 1){
cout<<"2(0)";
return ;
}
if(n == 2){
cout<<"2";
return ;
}
int j = 1, i = 0;
do {
j <<= 1;
if(j>n){
j >>= 1;
if(i == 1){
cout << "2";
}
else{
cout<<"2(";
print(i);
cout<<")";
}
if(n - j){
cout<<"+";
print(n-j);
}
break;
}
else{
i ++;
}
} while (1);
}
int main(){
int num;
cin>>num;
print(num);
return 0;
}