10pts,TLE
  • 板块P2424 约数和
  • 楼主damuzhi
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/20 20:41
  • 上次更新2024/3/20 22:07:08
查看原帖
10pts,TLE
1127424
damuzhi楼主2024/3/20 20:41
#include <bits/stdc++.h>

using namespace std;


long long fastpow(long long a,long long b){
	long long ans=1;
	while(b){
		if(b&1)ans*=a;
		b>>=1;
		a*=a;
	} 
	return ans;
}




int d(int n){
    int c = n;
    int zh[n+1];
    for(int i = 0; i <= n; i++){
        zh[i] = 0;
    }
    for(int i = 2; i <= n; i++){
        if(n % i == 0){
            while(n % i == 0){
                n /= i;
                zh[i]++;
            }
        }
        if(n == 1){
            break;
        }
    }
    // for(int i = 0; i <= c; i++){
    //     cout << zh[i] << ' ';
    // }
    //cout << endl;
    long long ret = 1;
    for(int i = 2; i<=c; i++){
        if(zh[i]){
            int tmp = fastpow(i,(zh[i]+1));
            int tmp2 = tmp-1;
            int tmp3 = i-1;
            ret *= tmp2/tmp3;
            //cout << ret << endl;
        }

    }
    return ret;
}



int main() {
    
    int x,y;
    cin >> x >> y;
    //cout << d(4)<< endl; 
    long long ans = 0;
    for(int i = x; i <= y; i++){
        ans += d(i);
    }
    cout << ans << endl;
    return 0;
}
2024/3/20 20:41
加载中...