zoukankan      html  css  js  c++  java
  • [CQOI2007]余数求和

    Description

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

    Input

    输入仅一行,包含两个整数n, k。

    Output

    输出仅一行,即j(n, k)。

    Sample Input

    5 3

    Sample Output

    7
    当i>k时,k%i就是k
    ans1=(n-k)*k   [n>k]
    当i<k时
    ans=k%1+k%2+k%3......k%i     i属于[1,min(n,k)]
    因为k%i=k-[k/i]*i
    所以原式=k*min(n,k)-[(k/1)*1+(k/2)*2+.....(k/i)*i]
    因为(k/i)在一定的区间内相同,所以可以分块
    于是就分成了√n块,每一块都是等差数列
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<cmath>
     6 using namespace std;
     7 typedef long long lol;
     8 lol ans,n,k,pos;
     9 int main()
    10 {lol i;
    11   cin>>n>>k;
    12   if (n>k)
    13     ans+=(n-k)*k;
    14   ans+=min(n,k)*k;
    15   for (i=1;i<=min(n,k);i=pos+1)
    16     {
    17       pos=min(n,k/(k/i));
    18       ans-=(k/i)*(i+pos)*(pos-i+1)/2;
    19     }
    20   cout<<ans;
    21 }
  • 相关阅读:
    第二章Maven安装与配置
    第一章 Maven简介
    什么是Maven?
    jbpm与OA项目-oa概念
    Hadoop学习常用的Linux命令
    包名命名规则
    判断网络类型
    webview的设置
    AlertDialog的实现
    SharedPreferences保存用户偏好参数
  • 原文地址:https://www.cnblogs.com/Y-E-T-I/p/8196121.html
Copyright © 2011-2022 走看看