<洛谷10月月赛R1·浴谷八连测R1·提高组·T1 3927 > 快速求1~n中的某一因子个数之和

ZZULIOJ 1104: 求因子和(函数专题) (C/C++) 输入正整数n(2 阅读详情

*PS:一次胡策的题,改成了多组数据,所以代码也是多组数据的qwq

go to the problem

题目背景

SOL君(炉石主播)和SOL菌(完美信息教室讲师)是好朋友。

题目描述

SOL君很喜欢阶乘。而SOL菌很喜欢研究进制。

这一天,SOL君跟SOL菌炫技,随口算出了n的阶乘。

SOL菌表示不服,立刻就要算这个数在k进制表示下末尾0的个数。

但是SOL菌太菜了于是请你帮忙。

输入输出格式

输入格式:
每组输入仅包含一行:两个整数n,k。

输出格式:
输出一个整数:n!在k进制下后缀0的个数。

输入输出样例

输入样例#1:
10 40
输出样例#1:
2

说明

对于20%的数据,n <= 1000000, k = 10

对于另外20%的数据,n <= 20, k <= 36

对于100%的数据,n <= 10^12,k <= 10^12

update

1.一组数据

2.K不会==1

3.现在std没有爆long long

4.对数据有问题联系icy (建议大家不要面向数据编程)

如何求一个数在k进制下末尾0的个数。
我们发现,10进制下,2*5–> 1个末尾0 ; 2进制下 ,2 –>1个末尾0。那么求一个数在k进制下末尾零的个数即把k进行质因数分解,同时找出这个数中所包含的各个因子的个数(如果需要3个2 则3个2记作1个) 取min。
问题转化为k的质因数分解和如何快速统计n!中的k的因子个数。

问题1:k的质因数分解

从1 for 到 sqrt(n),对于每个因子i都是一直除到不能除为止,所以并不需要先进行素数筛(之前的因子已经完全除尽了)。

代码|ω・`)
void Done(long long x)
{
    Cnt=0;
    for(long long i=2;i<=sqrt(K);++i)
    {
        if(x%i==0) P[++Cnt].name=i,P[Cnt].cnt=0;
        while(x%i==0) 
        {
            ++P[Cnt].cnt;
            x/=i;
        }    
        if(x==1||i>x) break;
    }
    if(x!=1) P[++Cnt]=(maple){x,1};
}

问题2:快速求1~n中某一因子个数之和。

对于 a^k < =n < a ^k+1

如 在1~9 中求因子2的个数之和

      1 2 3 4 5 6 7 8 9
发现:               除以
  2^1  1  1  1  1
  2^2     1   1
  2^3        1

共有 2^3/2^1+2^3/2^2+2^3/2^3个。

故 1~n中因子a的个数之和为:

a^k/a^1+a^k/a^2+a^k/a^3+…+a^k/a^k

因为计算机会自动下取整 故 1~n中因子a的个数为

n/a^1+n/a^2+n/a^3+…+n/a^k

代码|ω・`)
int A=a;
while(A<=N)
{
     Ans+=N/A;
     A*=a;
}

这道题的代码|・ω・`)

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;

long long N,K,ans,cnt,Cnt;

struct maple{
    long long name,cnt;
}P[10000000];
void Done(long long x)
{
    Cnt=0;
    for(long long i=2;i<=sqrt(K);++i)
    {
        if(x%i==0) P[++Cnt].name=i,P[Cnt].cnt=0;
        while(x%i==0) 
        {
            ++P[Cnt].cnt;
            x/=i;
        }    
        if(x==1||i>x) break;
    }
    if(x!=1) P[++Cnt]=(maple){x,1};
}
int main()
{
    while(scanf("%lld%lld",&N,&K)!=EOF)
    {
        ans=1e16+7;
        Done(K);
        for(long long i=1;i<=Cnt;++i)
        {
            long long A=P[i].name,a=P[i].name,Ans=0;
            while(a<=N)
            {
                Ans+=N/a;
                a*=A;
            }
            Ans/=P[i].cnt;
            ans=min(ans,Ans);
        }
        printf("%lld\n",ans);
    }
    return 0;    
}
雷达回波仿真 文章目录前言一、基础理解1.慢时间维度和快时间维度2.脉冲压缩3.MTI4. 脉冲多普勒处理5.cacfar检测二、具体流程1.产生回波信息加入目标时延以及噪声2.解调回波得到基带信号3.脉冲压缩 MTI MTD cafar检测 前言 雷达算法仿真学习,主要流程包括生成目标回波,将基带信号加在载波上其次是加上目标信息和干扰信号后发射,解调回波信号得到基带信号然后MTI,MTD,最后再检测。 一、基础理解 1.慢时间维度和快时间维度 连续M个脉冲回波经过相干解调之后的基带数据形成的一个二维数据矩阵,. 阅读详情

相关推荐

语音AI Agent落地实战:从ASR-NLP-TTS到多通道协同决策

语音AI Agent并非简单的自动语音识别(ASR)、自然语言处理(NLP)和文本转语音(TTS)三模块串联,而是在真实场景中需兼顾实时性、鲁棒性与隐私合规的端到端交互系统。其核心原理在于打破‘文本中间态’依赖,通过声学-文本-上下文多通道协同决策,融合原始音频特征、N-best置信度与设备环境信号,实现动态意图推演。技术价值体现在低延迟(如120ms离线唤醒)、高抗噪(-5dB SNR下WER≤25%)及强可控性(断网降级、本地热更新)。典型应用场景覆盖车载语音、智能家居与银行网点等边缘受限环境,尤其适用

weixin_29065959的博客 326

洛谷p1403 约数研究 ([1,n]中所有数的各个因数的和)

备忘: 1. 将n!质因数分解后,中某个质因数出现的次数 2. 【1,n】中某个约数出现的次数(不一定为质数) 2.2 筛法筛选因数,j+=i的做法

lgw999jyx的博客 489

从零开始:Doherty功率放大器的ADS仿真实践指南

本文详细介绍了Doherty功率放大器在ADS中的仿真设计流程,从基础原理到实际工程应用。通过负载调制技术,Doherty结构显著提高了功率放大器的效率,特别适合处理高峰均比信号。文章包含ADS环境搭建、对称与非对称设计、常见问题调试等实用内容,为射频工程师提供全面的实践指南。

weixin_29313547的博客 688

洛谷 [樱花] 题解

[樱花]题解 题目背景 又到了一年樱花盛开的时节。Vani 和妹子一起去看樱花的时候,找到了一棵大大的樱花树,上面开满了粉红色的樱花。Vani 粗略估计了一下,一共有足足 n!n! 片花瓣。 Vani 轻柔地对她说:“你知道吗?这里面的一片花瓣代表着你,我从里面随机摘一片,能和你相遇的概率只有 1/n!1/n! 那么小。我该是多么的幸运,才让你今天这么近地站在我面前。相信我,我一定会把这亿万分之一的缘分变为永远。” 粉红的樱花漫天飞舞,妹子瞬间被 Vani 感动了。她轻轻地牵起了他的手,和他相依而坐。这时,

Face_the_Blast的博客 657

一文读懂医疗大模型测评基准

面对市场上浩若星海的大模型,医院管理者如何采购适合自身场景的解决方案?如何选取好的模型作为基础进行课题研究?都是医院需要特别重视的问题。评测基准则benchmark是这些问题的重要解法,国内北京、上海、浙江已然开展了相关的标准化工作。

dz102的博客 1836

机器学习参数寻优:方法、实例与分析

机器学习模型的性能很大程度上依赖于其参数的选择。参数寻优(Hyperparameter Tuning)是提升模型表现的关键步骤之一。本文将详细介绍主流的参数寻优方法,包括网格搜索(Grid Search)、随机搜索(Random Search)、贝叶斯优化(Bayesian Optimization)、和超参数优化库(如Optuna和Hyperopt)等,并探讨它们的优缺点及适用场景。

甜盐的博客 2840

快速找一个数的所有因子

假设给定一个数num, 取值范围为1≤num≤1091≤num≤10^91≤num≤109 要求它的所有因子,例如当num=100时,则它的所有因子为:1,2,4,5,10,20,25,50,100 如果一个个循环判断很显然会超时,这里可以优化一下,如果a是num的因子,那么num/a也是a的因子,在每一次循环的时候都将num/a加入数组,当然要注意num/a不等于a,以免重复加入。这样就可以把复杂度降为O(n)O(\sqrt{n})O(n​) 核心代码如下: int y(int a) { int now

zkss的博客 2万+

SAP ABAP实战:用BAPI_PO_CREATE1创建采购订单时,如何巧妙处理PBXX和PB00条件类型?

本文深入探讨了在SAP ABAP开发中使用BAPI_PO_CREATE1创建采购订单时,如何有效处理PBXX和PB00条件类型的难题。通过分析外协加工订单的特殊需求,提供了从问题定位到解决方案的全流程方法,包括数据流向追踪、字段控制策略和增强实现方案,帮助开发者解决条件类型自动生成的业务痛点。

weixin_30614109的博客 824

统计一个整数的因子个数

统计一个整数的因子个数的方法: 1.对给定整数分解质因子 2.把不同质因子的个数加 1 后相乘 所得乘积,便是给定整数的因子的个数。(注意:计算出的因子个数包含 1 这个因子)

hnjzsyjyj的专栏 902

【云原生技术】SonarQube 生态中PMD插件和P3C插件详细介绍

4. 在项目中如何选择 / 组合 1. 小团队、对《阿里规约》认同度高 → 直接启用 **P3C**,配合 SonarJava 基本够用。 2. 追求全面 Bug/安全检测 + 额外编码规范 → **SonarJava + PMD**(必要时加 P3C 少量规则)。 3. 大型多团队,希望“一本规约”统一风格 → **P3C 为主**,再补充 SonarJava/PMD 的 Bug 与安全规则。 4. 通过 Quality Gate 控制:将 **Blocker/Critical** Bug

weixin_46453070的博客 1364

【Halcon 】Halcon 实战:如何为 XLD 模板添加极性信息以提升匹配精度?

本文介绍了Halcon中为XLD轮廓模板添加极性信息的实用技巧。通过先以"ignore_local_polarity"模式创建模板,首次匹配获得位置后,使用set_shape_model_metric运算符结合真实图像为模板注入极性信息(边缘明暗方向)。这种方法弥补了XLD模板初始不支持极性的缺陷,可显著提升后续匹配的精度和抗干扰能力。实验显示,添加极性信息后的模板匹配效果明显优于无极性的匹配结果。该技术特别适用于基于手动绘制或处理后的XLD轮廓创建模板的场景。

songhuangong123的博客 750

数论之因子个数的求法

1. N的因子个数条件:给定任意一个一个正整数N要求:求其因子的个数首先给出结论:对于任意的整型N,分解质因数得到N= P1^x1 * P2^x2* …… * Pn^xn;则N的因子个数M为 M=(x1+1) * (x2+1) * …… *(xn+1);证明过程:首先 举个例子吧24 = 2^3 * 3^1;其质因子有:为2和3 指数为 3和1那么对于2 有0 1 2 3四种指数选择,对于3 有0

Lesroad 1万+

【问题解决】Python 运行报错 `ModuleNotFoundError` 全网最全解决方案,一文搞定所有导包问题

本文全面解析Python中常见的ModuleNotFoundError和ImportError问题,提供从基础到高级的解决方案。文章首先分析问题原因,包括模块未安装、环境不一致、路径问题等,然后给出7种解决方案:安装缺失模块、检查Python环境、使用虚拟环境、添加搜索路径、相对导入、setup.py安装本地包和使用__init__.py。针对Jupyter Notebook、Docker容器等常见场景提供专门解决方案,并推荐使用requirements.txt、pipenv等预防措施。最后分享调试技巧,帮

博客 914

Zeldain Garden(求1-n中因子个数的和)详解

https://ac.nowcoder.com/acm/contest/7817/E 这道题之前,有一个原题---因数个数和。 主要讲两种解释方法。 首先转化一下思维,考虑每个数的贡献。什么意思呢? 比如1-n中考虑1这个数能作为多少数的因子,那么就是说1-n中有多少个数是1的倍数,那么是n/1个。 2这个数能作为多少数的因子,那么就是说1-n中有多少个数是2的倍数,那么是n/2个。 所以,这样下来得出式子n/1+n/2+n/3+n/4+.....n/n; 转化可得,n*(1/1+1/2+1/

代码笔记本 1821

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

图的一因子

图特定理: 对于任意点集S ∈V( G ),满足o( G - S ) ≤ | S |,G则存在一因子。( o代表分量中点数为奇数的分量个数 ) 证明: 必要性: 很显然,若是G存在一因子,G - S中的奇分量的个数必然要小于S的个数,不然G - S中的某个奇分 量中的点得不到匹配。 充分性: 反证,假设G满足任意S,o( G - S ) ≤ | S |,但是G不存在一因子。但

一刀不二 3005

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

训练赛:约数个数之和

题目描述:求 ∑i=1nf(i)\sum_{i=1}^n f(i)∑i=1n​f(i) ,f(i)f(i)f(i) 表示iii的因子个数。即,求1到n1到n1到n所有因子的个数和。 由于nnn最大到10610^6106因此,暴力就不用考虑了。 不难发现: 1作为因子出现了n次。() 2作为因子出现了n/2次。(2,4,6,8,10…,n) 3作为因子出现了n/3次。(3,6,9,12,14…,...

sususu814的博客 305

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

求因子个数之和

因数问题

2301_80418172的博客 921

【入门】因子求和

已知一个正整数N(20 <= N <= 800000000),请你编写程序求出该数的全部因子(不包括1和n)的和。一个整数代表n的因子和。

2301_80082750的博客 2084

因子和与因子个数,求逆元的通用方法

先上公式: 因子和: 如果p为素数,a为整数,那么p^a 的因子和为 1 + p + p^2 + p ^3+…+p ^a=(p ^(a+1) - 1)/(p-1);(等比数列求和) 如果对于对于一个整数数 n,可以进行质因数分解成 p1^a1 * p2 ^a2 p3 ^a3…pk ^ak 那么因子和为: 多个等比数列求和式的和。 因子个数: (a1+1)(a2+1)…(ak+1) poj2992...

weixin_43184669的博客 489

因子个数及因子之和问题

在数论中有一个质因数分解定理,可利用其中的一些性质来求一个数的因子个数及其因子和,下面附上定理及代码。 下面是代码 #include<bits/stdc++.h> using namespace std; //求因子个数 int fun1(int x) { int len=sqrt(x); int ans=1; int cnt; for(int i=2;i<=len;i++) { cnt=0; whil..

AC__dream的博客 1111

数论一:因子和与因子个数

摘抄于《ACM-ICPC 程序设计系列数论及应用》 基本理论 定义1:因子和函数σ定义为整数n的所有正因子之和,记为σ(n)σ(n)σ(n).  定义2:因子个数函数τ定义为正整数n的所有正因子个数,记为τ(n)τ(n)τ(n). 定理 定理1:如果f是积性函数F(n),那么f的和函数F(n)=Σ(d|n) f(d) 也是积性函数 推论:因子和函数σ与因子个数函数τ是积性函数(只要令 f(n)=n 和f(n)=1即可) 定理2:设p是一个素数,a是一个正整数,那么 σ(pa)=1+p+p2+p3+…+p

weixin_46220615的博客 1656

【因子算法】——求一个数的因子、质因子、求两个数的公因子

下面理清楚一些数学概念: 因数:一个数,如果存在可以被它整除的数,则这些数都是该数的因数。 规定0没有因数,1的因数是1,其他的比如4的因数有“1”、“2”、“4 因子:一个数,如果存在可以被它整除的数且这些数不包括它本身,则这些书都是该数的因子。 规定0没有因子,1的因子是1,其他的比如4的因子有“1”、“2” 质因子:一个数,如果可以分解成n个质数相乘,则n个质数成为该数的质因子。

「Android之禅」公众号博主,和你分享有价值有思考的技术文章 2万+

求一个数的正因子数(模板)

int countfactor(int n) { int sum=1; for(int i=2;i*i&lt;=n;i++) { int cnt=0; while(n%i==0) { n/=i; cnt++; } sum*=(cnt+1); ...

兜率工的博客 3379

求一个正整数的正因子数和正因子和

算术基本定理的应用: (1)一个大于1的正整数N,如果它的标准分解式为: ,那么它的正因数个数为 (2) 它的全体正因数之和为 因子数 #include<iostream> using namespace std; #define N 1000 int p[N],a[N]; int main() { int n; cin >> n; int k = 0; //...

yj8023xx的博客 1万+

【经典算法】:求一个数的因子数

问题分析如:整数 4,有1, 4, 2 共3个因子。现在就是输入一个数num,求其因子数。方法:判断数,如果数不为1,则其因子数起码有两个,(自身和1)然后从i=2开始到sqrt(num)做循环,如果num%i==0,则因子数+2当然如果两个因子数相同,是必须要去重的思路优点由于循环做的好,没有了类似于24 = 4*6 = 6*4的这种困扰 代码#include <iostream> #includ

阳光心态,健康人生的博客 3万+
上一篇: <最短路模板> 热浪
下一篇: <最小生成树模板·kruskal> 村村通、繁忙的都市
Loi_Mapleleaf
博客等级 码龄10年 17粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值