这道题难度有点大,我也是借鉴别人的思路才做出来的。
具体就是当n为奇数时f(n)的不同拆分种数为f(n)=f(n-1)
当n为偶数时n分为可拆分出1和不能拆分出1两种情况,当可拆分出1时f(n)=f(n-1),不可拆分出1时f(n)=f(n/2)。综上所述f(n)=f(n-1)+f(n/2)
import java.util.Scanner;
public class text {
public static void main(String[] args) {
int arr[] = new int[1000001];
Scanner s = new Scanner(System.in);
arr[1]=1;
while(s.hasNext()){
int n = s.nextInt();
for(int i=2;i<=n;i++){
if(i%2==0){
arr[i]=(arr[i-1]+arr[i/2])%1000000000;
}else {
arr[i]=arr[i-1];
}
}
System.out.println(arr[n]);
}
}
}