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

题解

这道题看了我挺久的

我们可以把k%x转化成k-[k/x]*x

不考虑上限为n的情况  我们假设[k/x]=a(a>0),那么x的区间的head就是[k/(a+1)]+1,tail就是[k/a]

这样我们可以通过求取这一段区间的值(就是等差数列),求出这段区间的k%x的值

a每次改成[k/(head-1)]

head和tail随之改变

这样依次做下去直到head变为1

这样时间复杂度就是a的个数  O(√k)

但是如果x>k呢  实际上x>k的情况只可能在n>k的时候出现

a开始的值为[k/n]=0,head和tail刚开始的值分别[k/(0+1)]+1和n,发现是正确的

 1 #include<bits/stdc++.h>
 2 #define ll long long
 3 using namespace std;
 4 ll n,k,ans,sum,h,t,num,cnt;
 5 int main(){
 6     scanf("%lld%lld",&n,&k);
 7     cnt=k/n;
 8     t=n;
 9     h=k/(cnt+1)+1;
10     ans+=k*(t-h+1)-cnt*(t-h+1)*(t+h)/2;
11     while (h>1){
12         cnt=k/(h-1);
13         t=k/cnt;
14         h=k/(cnt+1)+1;
15         ans+=k*(t-h+1)-cnt*(t-h+1)*(t+h)/2;
16     }
17     printf("%lld\n",ans);
18     return 0;
19 } 

View Code

转载于:https://www.cnblogs.com/zhuchenrui/p/7617415.html

BZOJ-1257-[CQOI2007]余数之和sum相关推荐

  1. BZOJ 1257: [CQOI2007]余数之和sum【神奇的做法,思维题】

    1257: [CQOI2007]余数之和sum Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 4474  Solved: 2083 [Submit][ ...

  2. bzoj 1257: [CQOI2007]余数之和sum 数论

    1257: [CQOI2007]余数之和sum Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnlin ...

  3. bzoj 1257: [CQOI2007]余数之和sum

    1257: [CQOI2007]余数之和sum Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 4462  Solved: 2078 [Submit][ ...

  4. BZOJ 1257 [CQOI2007]余数之和sum 题解

    1257: [CQOI2007]余数之和sum Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 1138  Solved: 509 [Submit][S ...

  5. BZOJ 1257 [CQOI2007]余数之和sum ——Dirichlet积

    [题目分析] 卷积很好玩啊. [代码] #include <cstdio> #include <cstring> #include <cmath> #include ...

  6. bzoj1257: [CQOI2007]余数之和sum

    1257: [CQOI2007]余数之和sum Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 2787  Solved: 1278 [Submit][ ...

  7. [bzoj] 1257 余数之和sum || 数论

    原题 给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + - + k mod n的值,其中k mod i表示k除以i的余数. \(\sum^n_{i=1} ...

  8. BZOJ1257 [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, ...

  9. 2017.3.15 余数之和sum 失败总结

    数论题还是不会. 主要是实在搞不清楚一个数和一个连续递增的模数有什么关系.. 唯一能感觉到的是倍数差,但效率不如直接求,感觉这种题一般都和质数有关了 好吧.和质数无关    竟然这么简单. 还真是倍数 ...

最新文章

  1. GOF23设计模式(创建型模式)建造者模式
  2. 华为鸿蒙vivo,华为鸿蒙成功的关键:要让小米、OPPO、VIVO都用上鸿蒙
  3. linux tomcat 隐藏版本号
  4. python语言入门z-【python】编程语言入门经典100例--22
  5. VIJOS国庆节模拟赛之繁星春水
  6. annotation-config vs component-scan – Spring Core--转
  7. mysql sql宽字节注入_sql注入之宽字节注入
  8. x86_x64 linux模式,一起学习x86/x64知识
  9. 无聊时对连分数的思考
  10. php-fpm nginx 关系,nginx 和php-fpm关系
  11. java swing获得焦点_Java Swing TextArea 滚动条并获取焦点
  12. 通过js打开浏览器独立的页面
  13. This application failed to start because it could not find or load the Qt platform plugin “xcb“.
  14. Excel中ROUND、ROUNDUP、ROUNDDOWN函数详解
  15. rt-thread通过spi连接W25Q32后无法读取ID
  16. 天翼网关超级密码获取器
  17. Dhrystone简介
  18. 电脑出现Hold Escape key to prevent StartlsBack from loading,导致电脑闪屏。
  19. uniapp生成canvas商品海报
  20. 举例说明协方差矩阵的运算

热门文章

  1. tdk磁材手册_TDK的铁氧体磁铁(FB系列) - TDK Product Center.PDF
  2. xx是一个类型 这在给定的上下文_基于上下文的派发:挂起临时变量内存
  3. python ide如何运行_如何在Ubuntu上安装IDLE Python IDE
  4. html5头像裁剪实例,使用cropper.js裁剪头像的实例代码
  5. oracle归档原理,增加ORACLE归档位置到NFS(转)
  6. java url加密解密,java URL 编码解码,该如何解决
  7. Java实用教程笔记 类与对象(续)
  8. 【SRIO】4、Xilinx RapidIO核详解
  9. 【 FPGA 】状态机的模型之Mealy型状态机
  10. 通过仿真和综合认识JK触发器(Verilog HDL语言描述JK触发器)