Gym 100090D Insomnia

从 n 变到 1,有多少种方案?

打表记忆化。

Gym 100090D InsomniaGym 100090D Insomnia
 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 int n;
 6 int dp[1000005];
 7 int dfs(int n) {
 8     if(n==1)
 9         return 1;
10     if(dp[n]>0)
11         return dp[n];
12     int cnt=0;
13     for(int i=2;i<=n;i++) {
14         if(n%i==0)
15             cnt+=dfs(n/i);
16     }
17     return dp[n]=cnt;
18 }
19 
20 int main()
21 {
22     memset(dp,0,sizeof(dp));
23     scanf("%d",&n);
24     printf("%d\n",dfs(n));
25 
26     return 0;
27 }
View Code

 

相关文章:

  • 2022-12-23
  • 2021-11-08
  • 2022-01-03
  • 2021-06-22
  • 2021-09-03
  • 2021-10-20
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-01
  • 2022-12-23
  • 2022-01-22
  • 2021-06-16
  • 2021-07-04
相关资源
相似解决方案