原题目:
题目大意:
解题思路:求个导可以发现,当N/k=e的时候为最大值,所以k有了,然后把只需要看N/k是不是有限小数即可.
代码:
void solve() {
ll i, j,k,x,y,z,p,q,u,v;
ll N = 10000,NN=6000000;
k = 2;
u = 0;
v = 0;
double a, b,c;
M.NT.get_prime_Euler(N+1);
for (i = 5; i <= N; i++) {
a = i;
u = round(a / M.E);
v = a / M.E + 1;
b = pow(( (i*1.0) / (1.0*v) ), v);
c = pow( ((i * 1.0) / (1.0*u)), u);
if (b > c) {
flag = M.NT.Divisible_Checker(i, v);
}
else {
flag = M.NT.Divisible_Checker(i, u);
}
if (flag == 0)ans1 = ans1 + i;
else ans1 = ans1 - i;
}
printf("%lld\n",ans1);
}