2 条题解
-
0
#include <bits/stdc++.h> using namespace std; typedef long long LL; LL f[2110000]; LL dfs(int n) { if(n <= 2000000 && f[n] > 0) return f[n]; LL ans = 1; int t = sqrt(n + 1); for(int i = 2; i <= t; i++) { if(n % i == 0) ans += dfs(i) + dfs(n / i); } if(t * t == n) ans -= f[t]; if(n <= 2000000) f[n] = ans; return ans; } int main() { int n; scanf("%d", &n); f[1] = 1; printf("%lld\n", dfs(n)); return 0; } -
0
#include<bits/stdc++.h> using namespace std; typedef long long LL; LL f[2110000]; LL dfs(int n) { if(n<=2000000&&f[n]>0)return f[n]; LL ans=1;int t=sqrt(n+1); for(int i=2;i<=t;i++) { if(n%i==0)ans+=dfs(i)+dfs(n/i); } if(t*t==n)ans-=f[t]; if(n<=2000000)f[n]=ans; return ans; } int main() { int n;scanf("%d",&n); f[1]=1; printf("%lld\n",dfs(n)); return 0; }
- 1
信息
- ID
- 84
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- 递交数
- 132
- 已通过
- 50
- 上传者