[nowcoder]因数个数和

Posted slrslr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[nowcoder]因数个数和相关的知识,希望对你有一定的参考价值。

链接:https://www.nowcoder.com/acm/contest/158/A

考虑每个数对答案的贡献,所以答案就是$\sum_{i=1}^{n}{\lfloor\frac{n}{i}\rfloor}$

整除分块搞起来

代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #define ll long long
 5 using namespace std;
 6 int q;
 7 ll n,ans;
 8 int main()
 9 {
10     scanf("%d",&q);
11     while(q--)
12     {
13         scanf("%lld",&n);
14         ans=0;
15         for(ll l=1,r;l<=n;l=r+1) {r=n/(n/l);ans+=(r-l+1)*(n/l);}
16         printf("%lld\n",ans);
17     }
18     return 0;
19 }

 

以上是关于[nowcoder]因数个数和的主要内容,如果未能解决你的问题,请参考以下文章

nowcoder907B n的约数

分解质因数(线性筛)

区间合数的最小公倍数(质数+因数分解)

线性筛因数个数

如何求数字n的因数个数及因数和

基础1--求一个数的最大质因数