码迷,mamicode.com
首页 > 其他好文 > 详细

ZZUOJ 10507: 非完美数

时间:2017-09-09 10:52:37      阅读:279      评论:0      收藏:0      [点我收藏+]

标签: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);
}

题目:

Problem A: 非完美数

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 99  Solved: 12
[Submit][Status][Web Board]

Description

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的不完美度之和.你能帮帮他么?

 

Input

两个数L,R表示这个区间.(1<=L<=R<=10^6).

 

Output

这个区间所有数不完美度之和.

 

Sample Input

2 3

Sample Output

3

ZZUOJ 10507: 非完美数

标签:ref   content   logs   memset   sam   ble   str   oar   void   

原文地址:http://www.cnblogs.com/bolderic/p/7497170.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!