首页 > 其他 > 详细

【CQOI2007】余数求和

时间:2018-10-01 00:50:45      阅读:212      评论:0      收藏:0      [点我收藏+]

题面

给出正整数n和k,计算G(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值,其中k mod i表示k除以i的余数。例如G(10, 5)=5 mod 1 + 5 mod 2 + 5 mod 3 + 5 mod 4 + 5 mod 5 …… + 5 mod 10=0+1+2+1+0+5+5+5+5+5=29

输入样例#1:
10 5
输出样例#1: 
29

30%: n,k <= 1000

60%: n,k <= 10^6

100% n,k <= 10^9

分析

考试遇到过,手推失败

lyd蓝书上重逢,虽然看着真的很头疼,还是大概地啃下来了,花了2h+(菜是原罪)

公式太难打了,我放弃,上手写,字丑,时间紧,地铁上写的

将就看了,基本是按照lyd的思路

技术分享图片

 

代码

#include<bits/stdc++.h>
using namespace std;
long long n,k,l,r,ans;
int main()
{
    cin>>n>>k;
    ans=k*n;
    for(l=1,r;l<=n;l=r+1)
    {
        r=k/l?min(k/(k/l),n):n;
        ans-=(r-l+1)*(k/l)*(l+r)/2;
    }
    cout<<ans;
    return 0;
}

 

【CQOI2007】余数求和

原文:https://www.cnblogs.com/NSD-email0820/p/9732657.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!