Sumdiv
Time Limit: 1000MS   Memory Limit: 30000K
Total Submissions: 22680   Accepted: 5660

Description

Consider two natural numbers A and B. Let S be the sum of all natural divisors of A^B. Determine S modulo 9901 (the rest of the division of S by 9901).

Input

The only line contains the two natural numbers A and B, (0 <= A,B <= 50000000)separated by blanks.

Output

The only line of the output will contain S modulo 9901.

Sample Input

  1. 2 3

Sample Output

  1. 15

Hint

2^3 = 8.
The natural divisors of 8 are: 1,2,4,8. Their sum is 15.

15 modulo 9901 is 15 (that should be output).

Source

 
【题目大意】
  求A^B的所有约数的和
【题解】
  把A唯一分解,不难得到答案:
   (1+p1+p1^2+……+p1^(φ1*B)) × (1+p2+p2^2+
  ……+p2^(φ2*B)) ×……× (1+pn+pn^2+……+pn^(φn*B))
  问题转化为等比数列求和,此处MOD为质数,存在逆元,但对于更一般的情况,采用分治法,复杂度多一个Log
  cal(p,k) = p^0 + p^1 + p^2 + ... + p^k
  if k&1
    cal(p,k) = (1 + p^((k + 1)/2))*cal(p, (k-1)/2)
  else
    cal(p,k) = (1 + p^(k/2)) * cal(p, k/2 - 1) + p^k
  快速幂即可
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <algorithm>
  5. #include <cstdlib>
  6. #include <cmath>
  7.  
  8. const int INF = 0x3f3f3f3f;
  9. const int MAXN = + ;
  10. const int MOD = ;
  11.  
  12. inline void read(int &x)
  13. {
  14. x = ;char ch = getchar();char c = ch;
  15. while(ch > '' || ch < '')c = ch, ch = getchar();
  16. while(ch <= '' && ch >= '')x = x * + ch - '', ch = getchar();
  17. if(c == '-')x = -x;
  18. }
  19.  
  20. int a,b,cnt,xishu[],zhishu[],ans;
  21.  
  22. int pow(int p, int k)
  23. {
  24. int r = , base = p;
  25. for(;k;k >>= )
  26. {
  27. if(k & )r = ((long long)r * base) % MOD;
  28. base = ((long long)base * base % MOD);
  29. }
  30. return r % MOD;
  31. }
  32.  
  33. //求解1 + p + p^2 + p^3 + ... + p^k
  34. int cal(int p, int k)
  35. {
  36. if(k == ) return ;
  37. if(k == ) return (p + ) % MOD;
  38. if(k & ) return ((long long)( + pow(p, (k + )/)) * (long long)(cal(p, (k - )/))%MOD) % MOD;
  39. else return((long long)(pow(p, k/) + ) * (long long)(cal(p, k/ - )) % MOD + pow(p, k)) % MOD;
  40. }
  41.  
  42. int main()
  43. {
  44. read(a),read(b);
  45. register int nn = sqrt(a) + ;
  46. for(register int i = ;i <= nn && a > ;++ i)
  47. if(a % i == )
  48. {
  49. zhishu[++cnt] = i;
  50. while(a % i == ) ++ xishu[cnt], a /= i;
  51. }
  52. if(a > )zhishu[++cnt] = a, xishu[cnt] = ;
  53. ans = ;
  54. for(register int i = ;i <= cnt;++ i)
  55. {
  56. ans *= cal(zhishu[i], xishu[i] * b);
  57. ans %= MOD;
  58. }
  59. printf("%d", ans%MOD);
  60. return ;
  61. }

POJ1848 Sumdiv

POJ1485 Sumdiv的更多相关文章

  1. POJ 1845 Sumdiv

    快速幂+等比数列求和.... Sumdiv Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 12599 Accepted: 305 ...

  2. Sumdiv(快速幂+约数和)

    Sumdiv Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 16244 Accepted: 4044 Description C ...

  3. poj 1845 Sumdiv 约数和定理

    Sumdiv 题目连接: http://poj.org/problem?id=1845 Description Consider two natural numbers A and B. Let S ...

  4. Sumdiv 等比数列求和

    Sumdiv Sumdiv Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 15364   Accepted: 3790 De ...

  5. poj 1845 POJ 1845 Sumdiv 数学模板

    筛选法+求一个整数的分解+快速模幂运算+递归求计算1+p+p^2+````+p^nPOJ 1845 Sumdiv求A^B的所有约数之和%9901 */#include<stdio.h>#i ...

  6. 『sumdiv 数学推导 分治』

    sumdiv(POJ 1845) Description 给定两个自然数A和B,S为A^B的所有正整数约数和,编程输出S mod 9901的结果. Input Format 只有一行,两个用空格隔开的 ...

  7. POJ 1845 Sumdiv(逆元)

    题目链接:Sumdiv 题意:给定两个自然数A,B,定义S为A^B所有的自然因子的和,求出S mod 9901的值. 题解:了解下以下知识点   1.整数的唯一分解定理 任意正整数都有且只有唯一的方式 ...

  8. poj1845 Sumdiv

    poj1845 Sumdiv 数学题 令人痛苦van分的数学题! 题意:求a^b的所有约数(包括1和它本身)之和%9901 这怎么做呀!!! 百度:约数和定理,会发现 p1^a1 * p2^a2 * ...

  9. 一本通1633【例 3】Sumdiv

    1633:[例 3]Sumdiv 时间限制: 1000 ms         内存限制: 524288 KB [题目描述] 原题来自:Romania OI 2002 求 ABAB 的所有约数之和 mo ...

随机推荐

  1. Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies(二)

    对搜索引擎.文件索引.文档转换.数据检索.站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理.事实上,通过 Python语言提供的各种模块,我们无需借助Web服务器或者Web浏览 ...

  2. Navicat12.1.7破解教程

    https://blog.csdn.net/qq_39344689/article/details/85161342

  3. scrollLeft/scrollTop/scrollHeight

    scrollHeight  :  It includes the element's padding, but not its border or margin.This property will ...

  4. React State&生命周期

    State&生命周期 State&生命周期 到目前为止我们只学习了一种方法来更新UI. 我们调用ReactDOM.render()来改变输出: function tick(){ con ...

  5. Django--Cookie和Session组件

    什么是Cookie: cookie的工作原理是:由服务端产生内容,浏览器收到请求之后保存在本地:当浏览器再次访问的时候,浏览器会自动带上这个cookie,这样服务端就能去通过这个cookie来判断你是 ...

  6. 玩转vue的slot内容分发

    vue的内容分发非常适合"固定部分+动态部分"的组件的场景,固定部分可以是结构固定,也可以是逻辑固定,比如下拉loading,下拉loading只是中间内容是动态的,而拉到底部都会 ...

  7. LINUX使用 su 命令临时切换用户身份

    1.su 的适用条件和威力 su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务,执行useradd ,beinan用户没有这个权限,而这个权限恰恰由root ...

  8. @ font-face 引入本地字体文件

    @font-face { font-family: DeliciousRoman; src: url('…/Delicious-Roman.otf'); font-stretch: condensed ...

  9. Cors之带凭据的请求

    带凭据的请求 默认情况下,跨源请求不提供凭据.通过将withCredentials属性设置为true,可以制定某个请求应该发送凭据.

  10. 零开始Android逆向教程(一)——初探Android逆向

    这段时间因为某些业务驱动,开始研究一些逆向相关的东西,浏览了下其所包含的大致内容,发现真是一个新大陆,跟之前耳听目染过的一些门面介绍完全不是一个层级的,真正的印证了下手难这一说法.   谨此以本文开始 ...