zoukankan      html  css  js  c++  java
  • 1257: [CQOI2007]余数之和sum

    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

    HINT

    50%的数据满足:1<=n, k<=1000 100%的数据满足:1<=n ,k<=10^9

    枚举商,然后算出区间[l,r],商只有sqrt(n)个,就可以了

     1 var
     2     n,k,ans:int64;
     3  
     4 procedure main;
     5 var
     6     i,l,r:int64;
     7 begin
     8     read(n,k);
     9     i:=k div n;
    10     l:=k div(i+1)+1;
    11     r:=n;
    12     while l>0 do
    13         begin
    14             inc(ans,k*(r-l+1)-i*(l+r)*(r-l+1)>>1);
    15             if l=1 then break;
    16             i:=k div(l-1);
    17             l:=k div(i+1)+1;
    18             r:=k div i;
    19         end;
    20     writeln(ans);
    21 end;
    22  
    23 begin
    24     main;
    25 end.
    View Code
  • 相关阅读:
    2020软件工程作业02
    第一次作业
    伪造IP
    Windows 上安装metasploit
    Kali安装 Typora
    在linux系统中安装调用汉语打字软件
    2020 年 10 月 10 日跑步随想
    最长公共前缀
    N皇后
    一道有趣的异步题
  • 原文地址:https://www.cnblogs.com/Randolph87/p/3795732.html
Copyright © 2011-2022 走看看