【POJ 1845】 Sumdiv (整数唯分+约数和公式+二分等比数列前n项和+同余)

【POJ 1845】 Sumdiv


用的东西挺全 最主要通过这个题学了约数和公式跟二分求等比数列前n项和 另一种小优化的整数拆分 


 整数的唯一分解定理:

      随意正整数都有且仅仅有一种方式写出其素因子的乘积表达式。

      A=(p1^k1)*(p2^k2)*(p3^k3)*....*(pn^kn)   当中pi均为素数

约数和公式:

对于已经分解的整数A=(p1^k1)*(p2^k2)*(p3^k3)*....*(pn^kn)

有A的全部因子之和为

     S = (1+p1+p1^2+p1^3+...p1^k1) * (1+p2+p2^2+p2^3+….p2^k2) * (1+p3+ p3^3+…+ p3^k3) * .... * (1+pn+pn^2+pn^3+...pn^kn)

用递归二分求等比数列1+pi+pi^2+pi^3+...+pi^n:

(1)若n为奇数,一共同拥有偶数项,则:
      1 + p + p^2 + p^3 +...+ p^n

      = (1+p^(n/2+1)) + p * (1+p^(n/2+1)) +...+ p^(n/2) * (1+p^(n/2+1))
      = (1 + p + p^2 +...+ p^(n/2)) * (1 + p^(n/2+1)) ->奇数时两边平分

上式红色加粗的前半部分恰好就是原式的一半,那么仅仅须要不断递归二分求和就能够了。后半部分为幂次式。将在以下第4点讲述计算方法。

 

(2)若n为偶数,一共同拥有奇数项,则:
      1 + p + p^2 + p^3 +...+ p^n

      = (1+p^(n/2+1)) + p * (1+p^(n/2+1)) +...+ p^(n/2-1) * (1+p^(n/2+1)) + p^(n/2)
      = (1 + p + p^2 +...+ p^(n/2-1)) * (1+p^(n/2+1)) + p^(n/2); ->偶数时以n/2为中点二分 中点n/2需额外加上

   上式红色加粗的前半部分恰好就是原式的一半,依旧递归求解


知道以上三点就好办了,代码量如开挂般少。。。(注意上long long 乘中会爆


代码例如以下:

#include <iostream>
#include <cstdio>
#include <cstring>
#define mod 9901
#define ll long longusing namespace std;ll pow(ll a,ll b)//高速幂
{ll ans = 1;while(b){if(b&1) ans = ans*a%mod;a = a*a%mod;b >>= 1;}return ans;
}ll sum(ll p,ll k)//二分求等比数列前n项和
{if(!k) return 1;if(k&1) return sum(p,k/2)*(1+pow(p,k/2+1))%mod;else return (sum(p,k/2-1)*(1+pow(p,k/2+1))+pow(p,k/2))%mod;
}ll make(ll a,ll b)//处理a的分解+答案
{int i;ll cnt,ans = 1;for(i = 2; i*i <= a; )//根号法+奇偶法{cnt = 0;while(a%i == 0){a /= i;cnt++;}if(cnt) ans = ans*sum(i,b*cnt)%mod;if(i == 2) i++;//简单的奇偶优化else i += 2;}if(a != 1) ans = ans*sum(a,b)%mod;return ans;
}int main()
{ll a,b;scanf("%lld %lld",&a,&b);printf("%lld\n",make(a,b));return 0;
}


转载于:https://www.cnblogs.com/lytwajue/p/7026300.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572315.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机语言2进制怎么计算,计算机语言二进制…八进制、十进制…怎样推算?数制是怎么读?...

满意答案hhaynyy2013.07.03采纳率&#xff1a;47% 等级&#xff1a;12已帮助&#xff1a;16403人其实每个进制的原理有一样&#xff0c;只是我们太习惯用十进制了(听说是因为人的十根手指的关系)&#xff0c;你想想二进制只用0和1表示实际数值&#xff0c;所以书写起来很‘累…

职称计算机word模拟题,2017年职称计算机考试Word2003模拟题及答案(1)

1、下列说法不正确的是(D)A、关闭文档时只需直接单击文档窗口右上角的“关闭”按钮即可B、打开一个已经存在的Word文档可以直接双击该图标C、也可以先打开Word2003&#xff0c;然后再打开Word文档D、在打开对话框中必须要选择相应的文件类型2、“菜单栏”中哪个下拉菜单有“打开…

分类分包思想

分类&#xff1a; 分类思想&#xff1a;分工协作&#xff0c;专人干专事 Dao&#xff1a;用于访问存储数据的数组或集合 Service&#xff1a;用于业务逻辑处理&#xff08;判断id是否存在&#xff09; Controller&#xff1a;用于和用户打交道&#xff08;接收需求&#xff0c;…

Linux命令之乐--sed

sed是stream edit的缩写&#xff0c;是处理文本非常重要的工具。 常见用法&#xff1a; 1. 替换文本 1.1 替换文本中的第一处符合的样式 sed s/pattern/replace_string file或者cat file | sed s/pattern/replace_string1.2 替换全局的符合的样式 sed s/pattern/replace_string…

9月计算机一级报名入口,北京市2018年9月计算机一级报名时间|网上报名入口【已正式开通】...

&nbsp&nbsp[导读]:北京市2018年9月全国计算机一级考试报名时间&#xff1a;6月11日至20日报名时间&#xff1a;2018年6月11日至20日24时。报名办法&#xff1a;考生须登陆北京市全国计算机等级考试网上报名系统网站(以下简称报名网站&#xff0c;网址&#xff1a;http&…

装饰器,迭代器,生成器

一、装饰器 无参装饰器&#xff1a; 1、示例1&#xff1a; 1 import time #加载时间模块2 def war(name): #定义装饰器3 def wari(): 4 start time.time() #定义开始时间5 name() #相当于执行下面的函数6 stop time.time() #定义结束时…

计算机控制中mcu,MCU学习1:单片机控制应用很广,它在智能控制中起什么作用?...

编撰&#xff1a;Aigo 艾国单片机是一种集成在电路芯片&#xff0c;采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等…

模板设计模式

概念&#xff1a; 固定的流程已经写好了&#xff0c;变化的流程定义成了抽象方法&#xff0c;被子类重写。 模板设计就是一种编码风格&#xff0c;把抽象类看作是一个模板&#xff0c;模板中不能决定的东西定义成抽象方法&#xff0c;让使用模板的去重写抽象方法实现需求 简单来…

与计算机病毒相关的小故事,我和计算机病毒的故事2000字论文

好文网为大家准备了关于我和计算机病毒的故事2000字论文的文章,好文网里面收集了五十多篇关于好我和计算机病毒的故事2000字论文好文,希望可以帮助大家。更多关于我和计算机病毒的故事2000字论文内容请关注好文网。ctrlD请收藏好文网为大家准备了关于我和书的故事200字范文,好文…

python的递归算法学习(1)

递归函数在函数内部&#xff0c;可以调用其他函数。如果一个函数在内部调用自身本身&#xff0c;这个函数就是递归函数。举个例子&#xff0c;我们来计算阶乘 n! 1 * 2 * 3 * ... * n&#xff0c;用函数 fact(n)表示&#xff0c;可以看出&#xff1a;fact(n) n! 1 * 2 * 3 *…

什么是方法重写

方法重写&#xff1a; 概念&#xff1a; 子类中出现与父类一模一样的方法时&#xff08;返回值类型&#xff0c;方法名和参数列表都相同&#xff09;&#xff0c;会出现覆盖效果&#xff0c;也称为重写或者复写。声明不变&#xff0c;重新实现。 方法重写的应用场景&#xff1…

计算机数学基础 视频讲解,计算机数学基础课件

《计算机数学基础课件》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《计算机数学基础课件(37页珍藏版)》请在人人文库网上搜索。1、计算机科学的数学基础,第一章&#xff1a;语言与正规语言,1.1 符号、符号串及其运算,符号和符号串在形式语言中是非常重要的基本概念…

C#缓存absoluteExpiration、slidingExpiration两个参数的疑惑

看了很多资料终于搞明白cache中absoluteExpiration&#xff0c;slidingExpiration这两个参数的含义。absoluteExpiration&#xff1a;用于设置绝对过期时间&#xff0c;它表示只要时间一到就过期&#xff0c;所以类型为System.DateTime&#xff0c;当给这个参数设置了一个时间时…

测试显卡cpu中文软件,显卡信息检测工具(GPUinfo)

国内比较牛的显卡识别软件&#xff0c;是gpu-z等多不能比的&#xff0c;可以显示硬件信息BIOS版本驱动信息显存类型频率信息。相关软件软件大小版本说明下载地址Gpuinfo-国内比较牛的显卡识别软件&#xff0c;是gpu-z等多不能比的&#xff0c;可以显示硬件信息 BIOS版本 驱动信…

Java代码块的基本使用

概念&#xff1a; 在Java中&#xff0c;使用 { } 括起来的代码被称为代码块 局部代码块&#xff1a; 位置: 方法中定义 特点&#xff1a;执行完就会在内存中消失 作用: 限定变量的生命周期&#xff0c;及早释放&#xff0c;提高内存利用率 public static void main(String[] ar…

Python 简易图形界面库easygui 对话框大全

easygui 安装 C:\> pip install easygui Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple Collecting easygui Using cached https://pypi.tuna.tsinghua.edu.cn/packages/8e/a7/b276ff776533b423710a285c8168b52551cb2ab0855443131fdc7fd8c16f/easygui-…

计算机绘图模型的参数方程,关于曲线绘图与运动控制问题的研究.doc

文档介绍&#xff1a;关于曲线绘图与运动控制问题的研究姓名:张硕朱聪聪禹雪珂学号:201722060220172106102017210609专业:研究生组题目:关于曲线绘图与运动控制问题的研究摘要随着计算机的广泛应用,计算机辅助绘图在当今社会已成为计算机辅助设计的基础。本文的建模题目就是利用…

MathSystem

Math&#xff1a; 概述&#xff1a; Math 包含执行基本数字运算的方法 调用方式&#xff1a; Math类中无构造方法&#xff0c;但内部的方法都是静态的&#xff0c;可以通过 类名.进行调用 常用方法&#xff1a; 方法名 方法名说明public static int abs(int a)返回参数的绝对…

包的引入(base版本)

1 #author F2 3 import os4 import sys5 print(__file__) #相对路径6 print(os.path.abspath(__file__)) #绝对路径7 print(os.path.dirname(os.path.abspath(__file__)))8 print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))9 BASE_PATH os.path.dirname(o…

魔兽8.0玩家最多服务器,魔兽世界8.0一上线玩家就挤爆服务器!然而暴雪还藏2个大招在后面...

这两天&#xff0c;《魔兽世界》凭着新版本“争霸艾泽拉斯”出尽了风头&#xff0c;疯狂的玩家们甚至挤爆了游戏的服务器。而8.0版本的质量倒是对得起玩家的期待&#xff1a;除了劲爆的剧情之外&#xff0c;以海岛探险和战线争霸为首的一众玩法也都相当有创意,魔兽争霸高清重制…