f[n] = sum{ f[i] } ( (n-1)%i==0)
f[1]=1
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std ;
const int N =1e3+2,mod=1e9+7;
int f[N];
int sov(int n){
if(n==1) return 1;
if(~f[n]) return f[n];
int s=0;
for(int i=1;i<n;i++){
if((n-1)%i==0) s+=sov((n-1)/i),s%=mod;
}
return f[n]=s;
}
signed main(){
int n;memset(f,-1,sizeof f);
int cas=0;
while(cin>>n){
printf("Case %d: %d\n",++cas,sov(n)) ;
}
}
浙公网安备 33010602011771号