原题 : Nontrivial Numbers
题意:读入l,r, 从[l,r]之间找出一个数,使得这个数的因数的和除以这个数所得的值最小
解法:直接搜索
#include <iostream>
using namespace std;
#include <math.h>
int l, r;
int main() {
cin >> l >> r;
if (l == 1) {
printf("1\n");
return 0;
}
int ans = 0;
double t = r;
for (int k = r; k >= l; k--) {
double sum = 0;
for (int i = 2; i*i <= k; i++) if (k%i == 0) {
sum += i;
if ((k/i) != i) sum += (k/i);
}
if ((sum/k) < t) {
t = sum/k;
ans = k;
}
if (t == 0) break;
}
cout << ans << endl;
}