zoukankan      html  css  js  c++  java
  • 【洛谷P2261】[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

    输入输出格式

    输入格式:

    两个整数n k

    输出格式:

    答案

    输入输出样例

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

    说明

    30%: n,k <= 1000

    60%: n,k <= 10^6

    100% n,k <= 10^9

    分析

    很巧妙的一道题,考试的时候可以写个程序找规律。

    洛谷题解里面写的已经很好了https://www.luogu.org/wiki/show?name=%E9%A2%98%E8%A7%A3+P2261

    代码

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    inline int read()
    {
        int x=0,f=1; char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}
        return x*f;
    }
    int n,k;
    ll ans;
    int main()
    {
        n=read();k=read();
        for(int i=1;i<=n;i++)
        {
            int p,q;
            p=k/i,q=k%i;
            ll j=p?k/p:n;
            if(j>n)j=n;
            ans+=q*(j-i+1)-(j-i+1)*(j-i)/2*p;
            i=j;
        }
        printf("%lld",ans);
        return 0;
    }
    欢迎转载,转载请注明出处!
  • 相关阅读:
    阿里云服务器 API 的使用
    CMDB 资产管理
    Django uwsgi+nginx+django 部署上线
    Django Middleware 中间件
    Django Form 表单
    Django FBV and CBV
    Django cookie and session
    Django 分页器
    Django ORM
    CodeVS 1008 选数(DFS)
  • 原文地址:https://www.cnblogs.com/huihao/p/7523028.html
Copyright © 2011-2022 走看看