博客
关于我
牛客多校第七场H(数论分块)
阅读量:256 次
发布时间:2019-03-01

本文共 733 字,大约阅读时间需要 2 分钟。

专题里面有,后悔没写,哭唧唧

#include
using namespace std;typedef long long ll;const int mod = 1e9 + 7;ll n,k;ll run(ll x){ ll j;/*i是前界,j是后界*/ ll res = 0; for(ll i = 2;i <= min(x,k);i = j + 1){ ll y = x / i; j = min(x / y,k); /*右边界大于k在同一个n/i的数量上会有变化,会多加上几个n/i 右边界是可以大于k的,而且情况还不少,所以有时候不能直观去看 */ res = (res + ((j - i + 1) * y) % mod); } return res;}int main(){ scanf("%lld%lld",&n,&k); ll sum = 0; sum += n + k - 1; //如果数论分块会加上n + n - 1 //k不一定等于n,与实际不符 sum = (sum + run(n) + run(n - 1)) % mod; printf("%lld\n",sum); return 0;}/*这道题是什么意思呢就是通过观察,我们可以知道(n,k)-->(nk,k) 第一个整数一定是第二个整数的倍数(n,k)-->(nk+1,k)令n = xk(第一个整数一定是k的倍数);1. n == xk2. n == xk + 1那么n == xk 或n - 1 == xk所以这道题就转化成了是求n / k(k = 1,2,3... )的和方法就是数论分块*/

转载地址:http://isox.baihongyu.com/

你可能感兴趣的文章
MySQL中的DB、DBMS、SQL
查看>>
MySQL中的DECIMAL类型:MYSQL_TYPE_DECIMAL与MYSQL_TYPE_NEWDECIMAL详解
查看>>
MySQL中的GROUP_CONCAT()函数详解与实战应用
查看>>
MySQL中的IO问题分析与优化
查看>>
MySQL中的ON DUPLICATE KEY UPDATE详解与应用
查看>>
mysql中的rbs,SharePoint RBS:即使启用了RBS,内容数据库也在不断增长
查看>>
mysql中的undo log、redo log 、binlog大致概要
查看>>
Mysql中的using
查看>>
MySQL中的关键字深入比较:UNION vs UNION ALL
查看>>
mysql中的四大运算符种类汇总20多项,用了三天三夜来整理的,还不赶快收藏
查看>>
mysql中的字段如何选择合适的数据类型呢?
查看>>
MySQL中的字符集陷阱:为何避免使用UTF-8
查看>>
mysql中的数据导入与导出
查看>>
MySQL中的时间函数
查看>>
mysql中的约束
查看>>
MySQL中的表是什么?
查看>>
mysql中穿件函数时候delimiter的用法
查看>>
Mysql中索引的分类、增删改查与存储引擎对应关系
查看>>
Mysql中索引的最左前缀原则图文剖析(全)
查看>>
MySql中给视图添加注释怎么添加_默认不支持_可以这样取巧---MySql工作笔记002
查看>>