题目链接:https://www.luogu.org/problemnew/show/P1403#sub
这题难点以及关键是找到,f(i)=n/i。
每个f(i)单个看很难找到规律,但求和时就会发现,f(i)=n/i。自己动手模拟下就明白。
很简单的数学常识嘛:
1-n的因子个数,可以看成共含有2因子的数的个数+含有3因子的数的个数……+含有n因子的数的个数
但在1~n中含有“2”这个因子的数有n/2个,3有n/3个,以此类推,公式就出来了
1 #include <iostream> 2 #include <string> 3 #include <algorithm> 4 #include <iomanip> 5 #include <cstdio> 6 #include <cstring> 7 #include <cmath> 8 using namespace std; 9 typedef long long ll; 10 typedef unsigned long long ull; 11 const int maxn=1e6+5; 12 int a[maxn]; 13 int n; 14 15 int main() 16 { 17 ios::sync_with_stdio(false); cin.tie(0); 18 19 cin>>n; 20 21 int s=0; 22 for(int i=1;i<=n;i++) 23 { 24 s+=n/i; 25 } 26 27 cout<<s<<endl; 28 29 return 0; 30 }
完。
本文解析了洛谷P1403题目,通过观察f(i)=n/i的规律,阐述了如何利用数学常识求解因子个数。代码实现简单,展示了通过迭代求和解决数学问题的方法。
&spm=1001.2101.3001.5002&articleId=96766441&d=1&t=3&u=7f5ee62b9c7149e3847a2bf98196498d)
400

被折叠的 条评论
为什么被折叠?



