代码非常非常非常非常简单!!!
#include<bits/stdc++.h>
using namespace std;
int n,num,ans,a[1010];
void dfs(int k,int sum){
if(k>num){
if(sum>=n) ans++;
return;
}
for(int i=a[k-1]+1;i<=sum+1;i++){
a[k]=i;
dfs(k+1,sum+i);
}
}
int main(){
scanf("%d",&n);
if(n==1){
printf("1 1");
return 0;
}
int s=1,ss=0;
while(s<n){
num++;
ss+=s;
s=ss+1;
}
a[1]=1;
dfs(2,1);
printf("%d %d",num,ans);
return 0;
}