tle求救!
查看原帖
tle求救!
1127424
damuzhi楼主2024/3/20 18:21
#include <bits/stdc++.h>

using namespace std;


struct a{
    int num;
    int sum;
};

a h(int n,int b){
    int ans = 0;
    int c = n * n;
    while(b % c == 0){
        b /= c;
        ans+=2;
    }
    while(b % n == 0){
        b /= n;
        ans++;
    }
    a ret;
    if(b == 1){
        b = 0;
    }
    ret.sum = ans;
    ret.num = b;
    return ret;
}



int howmp(int n){
    long long ans = 1;
    for(int i = 2; n > 0 && i <= n; i++){
                if(n % i == 0){
                    a tmp;
                    tmp = h(i,n);
                    //if(i == 2){
                    //        cout << n <<' ' << tmp.sum << endl;
                    //}
                    n = tmp.num;
                    
                    tmp.sum++;
                    //cout <<tmp.sum << ' ';
                    ans *= tmp.sum;
                }
    }
    return ans;
}










int main(){
    int l,u;
    cin >>l >> u;
    a ans;
    ans.num = -1;
    ans.sum = -1;
    for(int i = l; i <= u; i++){
            int tmp = howmp(i);
            if(ans.sum < tmp){
                ans.sum = tmp;
                ans.num = i;
            }
    }
    cout << "Between "<< l <<  " and " << u<<", " << ans.num<< " has a maximum of " << ans.sum<<" divisors.";
    return 0;
}
2024/3/20 18:21
加载中...