首页 > 其他 > 详细

E Zeldain Garden

时间:2020-10-02 13:44:37      阅读:29      评论:0      收藏:0      [点我收藏+]

题意:计算出给定区间内所有数的因数个数

思路:首先,n之内的所有因数个数的计算方法为:n/1+n/2+n/3.....n/n;

   那么,直接枚举会超时,我们只要在计算的时候跳转一下即可

   那么怎么跳转呢。

   比如我们枚举n为6

   当我们枚举到n/(4,5,6)这三个数的时候,贡献都为1,我们就直接将答案都为1的这些直接全部计算出来,然后跳到下一种情况即可

 1 # include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long LL;
 4 LL X(LL n)
 5 {
 6     LL l, r;
 7     LL ans = 0;
 8     for( l = 1; l <= n; l = r+1)
 9     {
10         r = n/(n/l);
11         ans += n/l *(r - l + 1);
12     }
13     return ans;
14 }
15 int main(){
16     int t;
17         LL x,y;
18         cin>> x>>y;
19         printf("%lld\n",X(y)-X(x-1));
20 }

 

E Zeldain Garden

原文:https://www.cnblogs.com/pangbi/p/13760498.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!