#include <cstdio>
#include <cstdlib>
int ans[100] = {0};
int dfs(int* arr, int k, int klim, int len){
if(k > klim){
bool bigger = false;
for(int lx = 0;lx < len;lx++){
if(arr[lx] == ans[lx]) continue;
if(arr[lx] > ans[lx]) bigger = true;
if(arr[lx] < ans[lx]) bigger = false;
break;
}
if(bigger){
for(int lx = 0;lx < len;lx++)
ans[lx] = arr[lx];
}
return 1;
}
int cnt = 0;
for(int lx = 0;lx+1 < len;lx++){
if(k%(arr[lx] + arr[lx+1]) == 0){
for(int ly = len;ly >= lx+2;ly--)
arr[ly] = arr[ly-1];
arr[lx+1] = k;
cnt += dfs(arr, k+1, klim, len+1);
for(int ly = lx+1;ly < len;ly++)
arr[ly] = arr[ly+1];
}
}
return cnt;
}
int main(){
int k; scanf("%d", &k);
int arr[100] = {0, 1};
int cc = dfs(arr, 2, k, 2);
printf("%d\n", cc);
for(int lx = 0;lx <= k;lx++)
printf("%d ", ans[lx]);
puts("");
return 0;
}
沒有留言:
張貼留言