zoukankan      html  css  js  c++  java
  • 【CQOI2007】余数求和

    题面

    给出正整数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;
    }
    “Make my parents proud,and impress the girl I like.”
  • 相关阅读:
    Oracle 更改DBID
    Oracle 修改字段长度
    Oracle 索引
    Oracle在无法打开数据库的状态下获取DBID
    Oracle 备份脚本
    Linux crontab计划任务
    Oracle restore和recovery的区别
    Django基础
    面向对象(一)
    socket
  • 原文地址:https://www.cnblogs.com/NSD-email0820/p/9732657.html
Copyright © 2011-2022 走看看