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

    Vj做不出的蒟蒻转战BC,然后被虐哭了。。。只做出了1001。。。还能不能愉快的玩耍了T_T

    算了算了,还是好好写我的题解吧。。。

    这道题貌似很难,后来看了CLJ的题解发现是我太弱了。

    对于k % i = k - (k div i) * i,

    有性质:k % i最多sqrt(n)个,而且相同的余数一定相邻,于是二分出每个余数有几个即可。

     1 /**************************************************************
     2     Problem: 1257
     3     User: rausen
     4     Language: Pascal
     5     Result: Accepted
     6     Time:32 ms
     7     Memory:224 kb
     8 ****************************************************************/
     9  
    10 var
    11   n, k, ans, i, l, r : int64;
    12  
    13 begin
    14   readln(n, k);
    15   i := k div n;
    16   l := k div (i + 1) + 1;
    17   r := n;
    18   while (l > 0) do begin
    19     inc(ans, k * (r - l + 1) - i * (l + r) * (r - l + 1) >> 1);
    20     if l = 1 then break;
    21     i := k div (l - 1);
    22     l := k div (i + 1) + 1;
    23     r := k div i;
    24   end;
    25   writeln(ans);
    26 end.
    View Code

    (p.s. 不知为何c++就是WA,于是改用Pascal写。。。)

    By Xs酱~ 转载请说明 博客地址:http://www.cnblogs.com/rausen
  • 相关阅读:
    C#使用各种时间戳及转换
    Rust借用机制的理解分析
    C# QRCoder 生成二维码
    Android 使用 JCIFS 访问共享文件
    Linux samba 创建共享盘
    WPF 等待对话框
    IIS实现Nginx功能:转发
    js jquery ajax跨域
    依赖注入
    .net standard
  • 原文地址:https://www.cnblogs.com/rausen/p/4007488.html
Copyright © 2011-2022 走看看