博客
关于我
牛客多校第七场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/

    你可能感兴趣的文章
    Objective-C实现hornerMethod霍纳法算法(附完整源码)
    查看>>
    Objective-C实现Horn–Schunck光流算法(附完整源码)
    查看>>
    Objective-C实现Http Post请求(附完整源码)
    查看>>
    Objective-C实现http下载文件 (附完整源码)
    查看>>
    Objective-C实现Http协议下载文件(附完整源码)
    查看>>
    Objective-C实现huffman哈夫曼编码算法(附完整源码)
    查看>>
    Objective-C实现ID3贪心算法(附完整源码)
    查看>>
    Objective-C实现IIR 滤波器算法(附完整源码)
    查看>>
    Objective-C实现IIR数字滤波器(附完整源码)
    查看>>
    Objective-C实现insertion sort插入排序算法(附完整源码)
    查看>>
    Objective-C实现integer partition整数分区算法(附完整源码)
    查看>>
    Objective-C实现integerPartition整数划分算法(附完整源码)
    查看>>
    Objective-C实现interpolation search插值搜索算法(附完整源码)
    查看>>
    Objective-C实现Interpolation search插值查找算法(附完整源码)
    查看>>
    Objective-C实现intersection交集算法(附完整源码)
    查看>>
    Objective-C实现intro sort内省排序算法(附完整源码)
    查看>>
    Objective-C实现inverse matrix逆矩阵算法(附完整源码)
    查看>>
    Objective-C实现inversions倒置算法(附完整源码)
    查看>>
    Objective-C实现isalpha函数功能(附完整源码)
    查看>>
    Objective-C实现islower函数功能(附完整源码)
    查看>>