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

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

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
ll n, k;
ll run(ll x) {
ll j;
ll res = 0;
for (ll i = 2; i <= min(x, k); i = j + 1) {
ll y = x / i;
j = min(x / y, k);
res = (res + ((j - i + 1) * y) % mod);
}
return res;
}
int main() {
scanf("%lld%lld", &n, &k);
ll sum = 0;
sum += n + k - 1;
sum = (sum + run(n) + run(n - 1)) % mod;
printf("%lld\n", sum);
return 0;
}
/这段代码实现了一个经典的数论分块问题。通过观察,我们可以发现当n和k满足一定条件时,问题可以通过分块的方法高效解决。代码中使用了C++编写,实现了分块计算的逻辑。以下是代码的主要功能解析:/

  • 代码结构分析

    • run函数:这是一个核心的分块计算函数,用于处理分块问题。它通过迭代的方式遍历可能的分块区间,计算每个区间的贡献值。
    • main函数:作为程序的入口,读取输入参数n和k,调用run函数计算结果,并输出最终结果。
  • 算法思路

    • 该程序解决的问题与数论分块密切相关。具体来说,问题可以转化为求满足一定条件的数对(n, k)的组合数。
    • 通过观察,当n和k满足一定关系时,可以将问题分解为多个小的子问题,分别计算每个子问题的解,然后将结果累加。
    • 代码中使用了分块技术来优化计算效率,避免了暴力枚举所有可能的情况,从而在较大数据量下仍能保持较快的运行速度。
  • 代码实现细节

    • run函数中,通过循环遍历可能的分块区间[i, j],计算每个区间对结果的贡献。
    • 在循环中,y变量用于计算当前分块的大小,而j变量则用于控制分块的右界。
    • 结果res通过累加每个分块的贡献值,最后返回最终结果。
  • 程序运行流程

    • 读取输入参数n和k。
    • 初始化总和sum,并加上基础值n + k - 1。
    • 调用run(n)run(n - 1)计算分块问题的结果,并累加到总和中。
    • 最后输出总和sum,作为程序的输出结果。
  • 如果需要进一步优化或扩展这个代码,可以考虑以下几个方向:

    • 优化分块计算的逻辑,减少循环次数。
    • 增加代码的注释,提高可读性。
    • 优化变量命名,使其更具描述性。

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

    你可能感兴趣的文章
    Opencv中KNN背景分割器
    查看>>
    OpenCV中基于已知相机方向的透视变形
    查看>>
    opencv保存图片路径包含中文乱码解决方案
    查看>>
    opencv图像分割2-GMM
    查看>>
    OpenCV(1)读写图像
    查看>>
    OpenCV:概念、历史、应用场景示例、核心模块、安装配置
    查看>>
    Openlayers图文版实战,vue项目从0到1做基础配置
    查看>>
    Openlayers高级交互(10/20):绘制矩形,截取对应部分的地图并保存
    查看>>
    Openlayers高级交互(16/20):两个多边形的交集、差集、并集处理
    查看>>
    Openlayers高级交互(17/20):通过坐标显示多边形,计算出最大幅宽
    查看>>
    Openlayers高级交互(19/20): 地图上点击某处,列表中显示对应位置
    查看>>
    openlayers:圆孔相机根据卫星经度、纬度、高度、半径比例推算绘制地面的拍摄的区域
    查看>>
    OpenMCU(一):STM32F407 FreeRTOS移植
    查看>>
    OpenMCU(二):GD32E23xx FreeRTOS移植
    查看>>
    OpenMMLab | S4模型详解:应对长序列建模的有效方法
    查看>>
    OpenMMLab | 【全网首发】Llama 3 微调项目实践与教程(XTuner 版)
    查看>>
    OpenMMLab | 面向多样应用需求,书生·浦语2.5开源超轻量、高性能多种参数版本
    查看>>
    OpenObserve云原生可观测平台本地Docker部署与远程访问实战教程
    查看>>
    OpenPPL PPQ量化(4):计算图的切分和调度 源码剖析
    查看>>
    OpenPPL PPQ量化(5):执行引擎 源码剖析
    查看>>