递推,一般的dp值:
#include<stdio.h> #include<string.h> #define mod 1000000007 int a[1100]; int Dp() { a[1]=1; a[2]=1; for(int i=3;i<=1000;i++) { for(int j=1;j<i;j++) { if((i-1)%j==0)a[i]+=a[j]; a[i]%=mod; } } return 0; } int main() { int n; int cas=1; Dp(); while(scanf("%d",&n)!=EOF) { printf("Case %d: ",cas++); printf("%d ",a[n]); } return 0; }