sicily 1691 Abundance

来源:互联网 发布:湖南乐知英语 编辑:程序博客网 时间:2024/05/14 14:50

这题应该算是水题,不过需要注意一点,就是约数。像4的约数是1,2,4,可不是1,2,2,4。我做的时候忽略了后一种情况,WA了两次才发现。知道这一点后,剩下的就是把中文翻译成代码了.....


#include <iostream>#include <cmath>using namespace std;int sigma(int n) {int sum = 0;int mid = sqrt((double)n);for (int i = 1; i <= mid; ++i) {if (n%i == 0) {sum += i;if (n/i != i)  //如4 = 2*2,约数只能算一个2,不能是两个2!sum  += n/i;}}return sum;}int main(){int t;cin >> t;while (t--) {int x, y;cin >> x >> y;int max = -1, maxab;while (x <= y) {maxab = sigma(x) - 2 * x;if (maxab > 0 && maxab > max)max = maxab;x++;}cout << max << endl;}return 0;}