Counting Divisors HDU - 6069

一文告诉你:如何在trae中编译运行GD32程序,并让AI帮你修改代码 本文详细介绍了如何将GD32程序如何用官方固件库构建出来,然后从Keil迁移到国产免费工具Trae,并利用AI进行代码修改的全过程。 阅读详情


In mathematics, the function d(n) denotes the number of divisors of positive integer n.


For example, d(12)=6 because 1,2,3,4,6,12 are all 12's divisors.

In this problem, given l,r and k, your task is to calculate the following thing :

(∑i=lrd(ik))mod998244353

Input
The first line of the input contains an integer T(1≤T≤15), denoting the number of test cases.

In each test case, there are 3 integers l,r,k(1≤l≤r≤1012,r−l≤106,1≤k≤107)
.
Output
For each test case, print a single line containing an integer, denoting the answer.
Sample Input
3
1 5 1
1 10 2
1 100 3
Sample Output

10

48

2302

题目分析:求区间 [ l , r ]中的所有数的k次幂因子的个数和模 998244353的值。

知识储备:对任意一个自然数都可以唯一分解为:   n=pα11⋅pα22⋯pαss   其中pi 为素数。

         数n的因子个数函数:   τ(n)=∏si=0(αi+1)   其中  αi  为上述分解中  pi  的幂。本题中的 k 方很好处理,只要每个 α 都乘一下 k 就可以了。

题目分析:比赛的时候采用的方法是一个数一个数的进行素因子分解,求出每个数的k次幂的因数和,再相加,结果超时了,意料之中。

                看标程给的思路主要是通过素因子来找数,看那些数是这些素因子的倍数,求出每个素因子的幂,然后求和。

下面给出求一个数因子和的一般代码:

int count(int n)///求n的因子的个数
{
    int s=1;
    for(int i=2;i*i<=n;i++)
        if(n%i==0)
    {
        int a=0;
        while(n%i==0)
        {
            a++;
            n/=i;
        }
        s=s*(a+1);
    }
    if(n>1) 
        s=s*2;
    return s;
}

给出AC代码:

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
const int N=1e6+9;
const int mod=998244353;
bool isprime[N];
int cnt=0;///记录素数的个数
long long prime[N];
void doprime()///线性筛素数,打表
{
    memset(isprime,true,sizeof(isprime));
    isprime[0]=isprime[1]=false;
    for(int i=2;i<=N;i++)
        if(isprime[i])
    {
        prime[cnt++]=i;
        for(long long j=i+i;j<=N;j+=i)
            isprime[j]=false;
    }
}

long long l,r,k;
long long n;
long long f[N];
long long num[N];///每个数的因子的个数

void work(long long p)
{
    for(long long i=l/p*p;i<=r;i+=p)
        if(i>=l)
        {
            if(f[i-l]%p==0)
            {
                int a=0;
                while(f[i-l]%p==0)
                {
                    f[i-l]/=p;
                    a++;
                }
                num[i-l]=num[i-l]*((long long)a*k+1)%mod;
            }
        }
}
int main()
{
    doprime();
        int t;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%lld%lld%lld",&l,&r,&k);
            n=r-l;  ///区间长度
            long long ans=0;
            for(int i=0;i<=n;i++)
            {
                f[i]=i+l;
                num[i]=1;
            }
            for(int i=0;i<cnt;i++)
            {
                if(prime[i]*prime[i]>r)
                    break;
                work(prime[i]);
            }
            for(int i=0;i<=n;i++)
            {
                if(f[i]>1)
                   num[i]=num[i]*(k+1)%mod;
                ans=(ans+num[i])%mod;
            }
            printf("%lld\n",ans);
        }
        return 0;
}




LabVIEW Modbus TCP通信避坑指南:解决连接中断、服务器异常与自动重连问题 本文详细解析了LabVIEW环境下Modbus TCP通信的常见问题,包括连接中断、服务器异常等,并提供了自动重连机制的实现方案。通过优化错误处理、超时参数和资源管理,帮助开发者构建更稳定的工业级Modbus TCP客户端,显著提升通信可靠性。 阅读详情

相关推荐

[Unity]-[UI]-[Image] 关于UI精灵图资源导入设置的详细解释

如果纹理存储了有特定含义的信息,并且您需要着色器中的确切值(例如,平滑度或金属度),请禁用此属性。此选项允许将纹理编码为特定格式(RGBM 或 dLDR,具体取决于平台)并通过后期处理步骤对纹理数据进行处理(推拉式扩张通道)。使用在3D模型的专业法线贴图。通用的纹理类型,一般在Material上的材质图片参数使用,比如漫反射、法线贴图这些。​​Compression​​:ASTC 6x6(移动端)或DXT5(PC)​​Compression​​:BC5(PC)或ASTC 6x6(移动端)

sky_smile_Allen的博客 2171

【hdu 6069】 Counting Divisors 【思维+数论】

Problem Description In mathematics, the function d(n) denotes the number of divisors of positive integer n.For example, d(12)=6 because 1,2,3,4,6,12 are all 12’s divisors.In this problem, given l,r an

lzs_lazy 357

伺服驱动器启用后对传感器线信号干扰的解决方案

在一些Arduino项目中,研究者发现,当伺服电机启动时,传感器信号会出现显著噪声。例如,在一个假肢项目中,研究者使用光电隔离器成功隔离了伺服驱动器对EMG传感器的干扰。然而,当启用伺服驱动器时,传感器线信号常常受到干扰,导致系统性能下降。传感器线信号是传感器输出的电信号,用于测量物理量,如温度、光线或位置。例如,在一些案例中,伺服驱动器的开关操作可能导致传感器信号出现尖峰或波动,特别是在模拟传感器上更为明显。描述: 使用光电隔离或其他隔离技术,分离伺服驱动器和传感器的电气路径,防止直接干扰。

有用好玩有趣的“电”知识 1466

HDU6070 Counting Divisors(数论)

Counting Divisors Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others) Total Submission(s): 3025    Accepted Submission(s): 1125 Problem Description In ma

gyr 348

OCTA-500:用于光学相干断层扫描血管造影研究的视网膜数据集|文献速递-基于生成模型的数据增强与疾病监测应用

数据集提供了丰富的图像和注释,包括两种模态(OCT/OCTA体积)、六种投影类型、四种文本标签(年龄/性别/眼别/疾病)以及七种分割标签(大血管/毛细血管/动脉/静脉/2D FAZ/3D FAZ/视网膜层)。我们介绍了新的 OCTA-500 数据集,该数据集包含来自 500 名受试者的 OCTA 成像,并提供了丰富的图像和标注集。(C) OCTA-500 切片的人工标注示例。图 4. OCTA-500 数据集中文本标签的统计直方图:(a) 性别,(b) 眼别,(c) 年龄,(d) 疾病。

weixin_38594676的博客 1436

产品经理必看!用Cursor自动生成符合开发规范的技术文档(含UI设计规则模板)

本文详细介绍了产品经理如何利用Cursor工具自动生成符合开发规范的技术文档,并整合UI设计规则模板。通过配置标准化文档结构和设计关联规则,Cursor能有效解决术语不统一、结构混乱等问题,提升跨团队协作效率。文章包含实际案例、规则配置要点及企业级实施方案,帮助产品经理快速掌握AI辅助文档生成技巧。

emacs5lisp的博客 223

Counting Cliques HDU - 5952 (暴力搜索)

Counting Cliques HDU - 5952 (暴力搜索) A clique is a complete graph, in which there is an edge between every pair of the vertices. Given a graph with N vertices and M edges, your task is to count the num...

little_starfish的博客 259

MALTAB程序利用质心法去寻峰

质心法的优点是简单易实现且计算速度快,适用于数据点较少或峰值较明显的情况。然而,对于复杂的数据或多峰曲线,质心法可能无法准确识别所有峰值,因此在这些情况下可能需要使用更复杂的峰值检测算法。质心法(Centroid Method)是一种寻找峰值的方法,其基本原理是通过计算数据窗口内的质心位置来确定峰值的位置。质心是指在一维数据中,按照数据的幅值对位置进行加权平均的结果,即质心位置为数据幅值加权平均值的位置。变量定义了计算质心的窗口大小。最后,绘制了找到的峰值位置和幅值点,并显示了找到的峰值位置和幅值的结果。

走向CTO的路上... 1345

[HDU]6069 Counting Divisors

URL : http://acm.hdu.edu.cn/showproblem.php?pid=6069求: (∑i=lrd(ik))mod998244353\begin{eqnarray*} \left(\sum_{i=l}^r d(i^k)\right)\bmod 998244353 \end{eqnarray*} l,r,k(1≤l≤r≤1012,r−l≤106,1≤k≤107)l,r,k

chutzpah 1820

11.1华为OD机试真题 新系统 - 整理学生编号 (Java/Py/C/C++/Js/Go)

11.1华为OD机试真题 新系统 - 整理学生编号 (Java/Py/C/C++/Js/Go)

算法大师! 389

如何成为一名高级数字 IC 设计工程师(6-7)数字 IC 验证篇:DEBUG 技巧

不懂验证的设计不是好的设计;UVM 验证思维是指导缜密的芯片设计的导师;推荐书籍《芯片验证漫游指南》。

新芯设计的博客 1605

HDU 6069 Counting Divisors 2017 多校

题目链接赛时没有做出来是我的锅,各种骚操作都没过,想到大数分解上去了,其实本题没这个必要。 题意很简单, 求区间[l, r]内每个数的k次方的所有因子个数。这里需要知道一点前导知识: 对任意一个自然数都可以唯一分解为:   n=pα11⋅pα22⋯pαss  ~~ n = p_1^{\alpha_1} \cdot p_2^{\alpha_2} \cdots p_s^{\alpha_s}~~ 其

Sothan 1012

出现 Error occurred during initialization of VMagent library failed Agent OnLoad 解决方法

ntelliJ IDEA启动时出现"Agent library failed to load"错误,主要原因是JVM代理加载失败。解决方法包括:1)完全卸载并删除用户目录下的JetBrains配置文件;2)检查并修改idea64.exe.vmoptions文件,确保路径正确并删除不必要的-javaagent参数;

码农研究僧的博客 2484

hdu 6069 Counting Divisors(2017多校第四场)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6069 Counting Divisors Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others) Total Submission(s): 3282    Accepte

far away 344

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

HDU 6069 Counting Divisors

题目描述HDU 6069 Counting Divisors分析设 i=pr11pr22…prkki = p_1^{r_1}p_2^{r_2}\dots p_k^{r_k},则 d(i)=∏ki=1(ri+1)d(i)=\prod_{i=1}^k(r_i+1),因此我们有d(ik)=∏ki=1(ri∗k+1)d(i^k)=\prod_{i=1}^k(r_i*k+1),显然用区间筛法,可以做到在 O(

taotao 的大学墓志 585

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

HDU 6069 Counting Divisors

题目链接;点我In mathematics, the function d(n) denotes the number of divisors of positive integer n.For example, d(12)=6 because 1,2,3,4,6,12 are all 12’s divisors.In this problem, given l,r and k, your task

wood 1208

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

HDU 6069 Counting Divisors

HDU 6069 Counting Divisors原题连接: http://acm.hdu.edu.cn/showproblem.php?pid=6069应该是比较简单的。(开始一直怀疑自己读错题了)除数函数是积性的。τ0(n)=∑i|ni0\tau_0(n)=\sum_{i|n}i^0τ0(n)=∏i=1r(ai+1)\tau_0(n)=\prod_{i=1}^r(a_i+1)其中nn的质因数

ZLH_HHHH的博客 621

hdu6069 Counting Divisors

根据约数个数定理:n=p1^a1×p2^a2×p3^a3*…*pk^ak,n的约数的个数就是(a1+1)(a2+1)(a3+1)…(ak+1). 若i=p1^a1×p2^a2×p3^a3*…*pk^ak,则i^K=p1^(a1*K)×p2^(a2*K)×p3^(a3*K)*…*pk^(ak*K),i^K的约数的个数就是(a1*K+1)(a2*K+1)(a3*K+1)…(ak*K+1) 题目重点

Nowara_Shinnosuke的博客 1079

HDU6069 Counting Divisors

题目链接题意​ 对于给定的 l,r,kl,r,k 求解 (∑i=lrd(ik))mod998244353\biggl(\sum_{i=l}^rd(i^k)\biggr)\mod998244353 其中 d(n)d(n) 表示数字n的约数个数。分析​ 根据欧拉定理可以得到对于一个数 n=pa11pa22pa33…pakkn=p_1^{a_1}p_2^{a_2}p_3^{a_3}…p_k^{

dDarkdawn的博客 457

HDU6069 Counting Divisors【欧拉筛法】

Counting Divisors Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others) Total Submission(s): 6208 Accepted Submission(s): 2147 Problem Description In mathematics, the function d(n) denotes the number of divisors of posit

海岛Blog 448

HDU6069 Counting Divisors【区间筛法】

Counting Divisors http://acm.hdu.edu.cn/showproblem.php?pid=6069 Time Limit: 10000/5000 MS (Java/Others)Memory Limit: 524288/524288 K (Java/Others) Total Submission(s): 4338Accepted Submissi...

逐梦者 455

hdu6069 Counting Divisors(数学)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6069题意:设d(xk)为求xk的因数的个数,如12的因数有1,2,3,4,6,12共6个,d(12)=6,题目求∑i=lrd(ik)设d(x^k)为求x^k的因数的个数,如12的因数有1,2,3,4,6,12共6个,d(12)=6,题目求\sum_{i=l}^r d(i^k)官方题解:设n=pc11pc

酱油拌面 819

HDU_6069 Counting Divisors

题目链接题目意思给你三个数L,R,K让你求满足下面公式的答案 解题思路由题意我们可以知道L,R最大为1e12,所以我们可以用筛法筛选sqrt(1e12)之内的所有素数。 有数论中的结论我们知道,任何一个正整数x,都可以分解成若干个素数幂的积。 则 x = (p1^m1)* (p2^m2)* (p3^m3)* …..* (pn^mn); 其中p1,p2,p3…pn都是素数,m1,m2,m3

长颜草的博客 347

[HDU 6069] Counting Divisors

Description In mathematics, the function\(d(n)\)denotes the number of divisors of positive integer\(n\). For example,\(d(12)=6\)because\(1,2,3,4,6,12\)are all\(12\)'s divisors. In this problem...

weixin_34238642的博客 145

hdu 6069 Counting Divisors(筛法)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6069题意: i∈[l,r],求d(i^k)在[l,r]的和,d(a)表示a的因子和(d(12)=6,d(9)=3) (1≤l≤r≤10^12,r−l≤10^6,1≤k≤10^7)解析: 求一个数的因子和s=p1^a1*p2^a2*p3^a3….. d(s)=(a1+1)(a2+1)(a3+1)*

咸鱼有梦想 325

hdu 6069 Counting Divisors

定义函数d(n) = n 的因子个数。给定区间[l,r]和常数k,求Sigma(d(i^k)) mod 998244353

iTom's blog 532
上一篇: Kanade's sum HDU - 6058
下一篇: How many integers can you find HDU - 1796
Grady_Ne
博客等级 码龄10年 45粉丝 177原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值