Raywzy定义一个数x是完美的,当且仅当x等于他的所有约数(比x小)之和。比如,6是完美的的(6=1+2+3).
根据这个定义,Raywzy假设一个数x的不完美度为x与所有约数(比x小)差的绝对值.显然完美数的不完美度是0.f(6)=|6-1-2-3|=0.
现在给定一个区间[L,R],Raywzy想知道L到R的不完美度之和.你能帮帮他么?
标签:ref content logs memset sam ble str oar void
题目链接:http://acm.zzu.edu.cn:8000/problem.php?id=10507
题目大意:求L到R区间内所有数与小于它自己的约数的差的绝对值的和。
解题思路:拿个筛子筛一筛。注意1的时候还是1以及long long
代码:
const int maxn = 1e6 + 5; typedef long long ll; int l, r; ll a[maxn], sum[maxn]; void dowork(){ memset(a, 0, sizeof(a)); for(int i = 1; i < maxn; i++) a[i] = i - 1; a[1] = 1; for(int i = 2; i <= 1e6 / 2; i++){ for(int j = i * 2; j <= 1e6; j += i){ a[j] -= i; } } memset(sum, 0, sizeof(sum)); for(int i = 1; i < maxn; i++){ sum[i] = sum[i - 1] + abs(a[i]); } } int main(){ dowork(); scanf("%d %d", &l, &r); ll ans = sum[r] - sum[l - 1]; printf("%lld\n", ans); }
题目:
这个区间所有数不完美度之和.
2 3
3
标签:ref content logs memset sam ble str oar void
原文地址:http://www.cnblogs.com/bolderic/p/7497170.html