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

【CQOI2007】余数求和

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

标签:int   ima   bad   image   reg   its   整数   region   正整数   

题面

给出正整数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】余数求和

标签:int   ima   bad   image   reg   its   整数   region   正整数   

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

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