E Zeldain Garden
作者:互联网
题意:计算出给定区间内所有数的因数个数
思路:首先,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 }
标签:Garden,LL,个数,因数,long,枚举,跳转,Zeldain 来源: https://www.cnblogs.com/pangbi/p/13760498.html