Calculating [整除分块]

2024-01-30 02:18
文章标签 整除 分块 calculating

本文主要是介绍Calculating [整除分块],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

传送门

根据小学奥数知识 , 要求的就是1-n的所有数的约数个数和

我们从每个约数i的贡献考虑 , i的贡献即为 [n/i] 这里向下取整

所以要求的就是\sum [n/i](1<=i<=n)

这里用整除分块可以降到\sqrt n


 介绍一下整除分块 , 一般用于上面这一类式子

我们发现有一段区间n/i是相等的 , 不妨设为l和r , 满足

[n/l] = [n/r] = x

当 r  等于 [n / x]

根据取整的性质  r<=n/x<r+1  所以如果r再加1那么 n/(r+1)<x 显然不满足相等

根据这一点我们可以写出代码

for(LL l=1,r;l<=n;l=r+1){r = n/(n/l);ans = (ans + (r-l+1) * (n/l)) % Mod;//长度*值
}

取模先模再加再模 

#include<bits/stdc++.h>
#define LL long long
#define Mod 998244353
using namespace std;
LL l,r;
LL calc(LL n){LL ans=0;for(LL l=1,r;l<=n;l=r+1){r = n/(n/l);ans = (ans + (r-l+1) * (n/l)) % Mod;}return ans;
}
int main(){scanf("%lld%lld",&l,&r);printf("%lld",((calc(r)-calc(l-1))%Mod+Mod)%Mod);return 0; 
}

 

这篇关于Calculating [整除分块]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/658820

相关文章

Spring Boot实现大文件分块上传

1.分块上传使用场景 大文件加速上传:当文件大小超过100MB时,使用分片上传可实现并行上传多个Part以加快上传速度。 网络环境较差:网络环境较差时,建议使用分片上传。当出现上传失败的时候,您仅需重传失败的Part。 文件大小不确定: 可以在需要上传的文件大小还不确定的情况下开始上传,这种场景在视频监控等行业应用中比较常见。 2.实现原理 实现原理其实很简单,核心就是客户端把大文件

数论 - 整除问题 --- 整数集合中找出3的最大倍数

Mean:   题目描述:给一个包含非负整数的数组(长度为n),找出由这些数字组成的最大的3的倍数,没有的话则输出impossible。 analyse: 首先想到的就是直接暴力,这是最蠢的方法,数据一大的话,必会TLE。 直接用蛮力的话,生成所有的组合,为 2^n个,对每个数字再进行比较判断,需要 O(n)的时间,因为n可能会比较大,需要每个位的比较。总的时间复杂度为O(n * 2

【BNU】40719 Arithmetic Progressions【分块+FFT】

传送门:【BNU】40719 Arithmetic Progressions 题目分析: 用分块+FFT强行AC了这题…… 之前一直TLE……然后改了好久把姿势改的优美点了……终于过了…… 大概思路是:我们考虑分块,假设每一块的大小为S,一共分了B块然后我们分两种情况讨论: 1.第二个数在第i块,第一个数在(1~i-1)块内,第三个数在(i+1~B)块内。 2.至少两个数在同一块内。

【HDU】5213 Lucky 【分块(在线算法)】

传送门:【HDU】5213 Lucky 题目分析: 我来说一下这题的在线做法。 首先我们将区间分成 n√ \sqrt n块,用f[x][y]表示第x块的数和第y块的数相加等于K的对数,这个可以 O(nn√) O(n \sqrt n)的预处理。然后还有g[x][y]表示在第1~x块中有的大小为y的数的个数,这个的复杂度同样 O(nn√) O(n \sqrt n)。 接下来,对于每组询问,我们

针对大数据的种子点生长——分块生长的策略

前言   在之前的种子点生长系列中,探讨了使用三种提取图像中内容部分种子点生长算法,分别是泛洪法、扫描线法和区段法。我们知道这三种算法在空间上都需要占用三维图像的空间以及相应的位图标记表的空间。有时,我们需要处理一些体积相当大的数据,这些数据都是内存中无法放下的,如数十数百GB的数据,想要获得其中图像内容信息,一般需要对图像进行分块生长。   本文使用一种比较直接的思路对数据进行分块,然

P3313 [SDOI2014] 旅行(分块做法)

~~~~~      P3313 [SDOI2014] 旅行 ~~~~~      总题单链接 思路 ~~~~~      遇到这种树上路径问题,就考虑用重链剖分转为区间问题。 ~~~~~      问题转换为了:给定一个区间和 k k k,求这个区间内信仰为 k k k 的城市的 权值和 或 最大权值。 ~~~~~      这个问题也可以用动态开点线段树解决(现在不会,以后

[a, b]区间内找到一些数满足可以被一个整数c整除

/***************************************************************** 问题描述: 牛牛想在[a, b]区间内找到一些数满足可以被一个整数c整除,现在你需要帮助牛牛统计区间内一共有多少个这样的数满足条件?  输入描述: 首先输入两个整数a,b,(-5*10^8 ≤ a ≤ b ≤ 5*10^8)接着是一个正整数c(1 <=

学习笔记 ---- 数论分块(整除分块)

文章目录 算法概述引理引理 1 1 1引理 2 2 2 数论分块结论(区间右端点公式)过程 N N N 维数论分块向上取整的数论分块 例题 H ( n ) H(n) H(n)[CQOI2007] 余数求和[清华集训2012] 模积和 算法 概述 数论分块可以快速计算一些含有除法向下取整的和式(即形如 ∑ i = 1 n f ( i ) g ( ⌊ n i ⌋ ) \sum

C/C++网络编程--文件分块传输

文件分块传输是网络编程中一个常见的任务,尤其是在处理大文件时,将文件分块可以提高传输效率,简化错误处理,并可以实现并发传输。下面,写个从客户端向服务器发送大型数据的demo。 客户端 客户端有两点需要注意,在传输分两个一个是文件总块数和文件块,。传输文件总块数让服务器知道有多少文件块需要接收,确保所有数据都被完整地发送到服务器,避免因文件块数不对导致文件重组失败。 传输文件总块数 int

信息安全数学基础(1)整除的概念

前言        在信息安全数学基础中,整除是一个基础且重要的概念。它涉及整数之间的特定关系,对于理解数论、密码学等领域至关重要。以下是对整除概念的详细阐述: 一、定义      设a, b是任意两个整数,其中b ≠ 0。如果存在一个整数q,使得等式a = q × b成立,那么称b整除a,或者a被b整除,记作b | a。此时,b叫作a的因数,a叫作b的倍数。反之,如果不存在这样的整