hdu 2421 Deciphering Password(约数个数问题)
http://acm.hdu.edu.cn/showproblem.php?pid=2421
A^B 能够写成 p1^e1 * p2^e2 * .....*pk^ek。(A。B <= 1000000)
求 ∏1^3+2^3+...+(ei+1)^3 % 10007的值。
依据质因子分解定理知A = p1^a1 * p2^a2 *.....* pk^ak,那么A^B = p1^(a1*B) * p2^(a2*B) *.....*pk^(ak*B)。
那么ei = ai*B,带入上式计算。
#include <stdio.h>
#include <iostream>
#include <map>
#include <set>
#include <bitset>
#include <list>
#include <stack>
#include <vector>
#include <math.h>
#include <string.h>
#include <queue>
#include <string>
#include <stdlib.h>
#include <algorithm>
//#define LL __int64
#define LL long long
#define eps 1e-9
const double PI = acos(-1.0);
using namespace std; const int maxn = 1000010;
const int mod = 10007; LL A,B;
int prime[maxn];
bool flag[maxn];
LL facCnt[1010]; //由于数组开的太大,每次都须要初始化,导致TLE了几次。
int cnt; void getPrime()
{
memset(flag,false,sizeof(flag));
prime[0] = 0;
for(int i = 2; i < maxn; i++)
{
if(flag[i] == false)
prime[++prime[0]] = i;
for(int j = 1; j <= prime[0] && prime[j]*i < maxn; j++)
{
flag[prime[j]*i] = true;
if(i % prime[j] == 0)
break;
}
}
} void getFac()
{
LL tmp = A;
cnt = 0;
memset(facCnt,0,sizeof(facCnt));
for(int i = 1; i <= prime[0]&&prime[i]*prime[i] <= tmp; i++)
{
if(tmp % prime[i] == 0)
{
while(tmp%prime[i]==0)
{
facCnt[cnt]++;
tmp /= prime[i];
}
cnt++;
}
if(tmp == 1)
break;
}
if(tmp > 1)
{
facCnt[cnt++] = 1;
}
} int main()
{
getPrime();
int item = 0;
while(~scanf("%I64d %I64d",&A,&B))
{
getFac();
LL ans = 1;
for(int i = 0; i < cnt; i++)
{
LL s = (((facCnt[i]*B+1)*(facCnt[i]*B+2))/2 )%mod;
s = (s*s)%mod;
ans = (ans*s)%mod;
}
printf("Case %d: %I64d\n",++item,ans);
}
}
hdu 2421 Deciphering Password(约数个数问题)的更多相关文章
- hdu 4542 数论 + 约数个数相关 腾讯编程马拉松复赛
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4542 小明系列故事--未知剩余系 Time Limit: 500/200 MS (Java/Others) ...
- hdu1492(约数个数定理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1492 这里先讲一下约数个数定理: 对于正整数x,将其质因分解为 x = pow(p1, a) * po ...
- 【BZOJ】3994: [SDOI2015]约数个数和
题意: \(T(1 \le T \le 50000)\)次询问,每次给出\(n, m(1 \le n, m \le 50000)\),求\(\sum_{i=1}^{n} \sum_{j=1}^{m} ...
- UVA294DIvisors(唯一分解定理+约数个数)
题目链接 题意:输入两个整数L,U(L <= U <= 1000000000, u - l <= 10000),统计区间[L,U]的整数中哪一个的正约数最多,多个输出最小的那个 本来 ...
- BZOJ3994: [SDOI2015]约数个数和
Description 设d(x)为x的约数个数,给定N.M,求 Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M. O ...
- BZOJ 3994 约数个数和
Description 设\(d(x)\)为\(x\)的约数个数,给定\(N,M\),求\[\sum_{i=1}^{N}\sum_{j=1}^{M}d(ij)\]. Input 输入文件包含多组测试数 ...
- bzoj:3994:vijos1949: [SDOI2015]约数个数和
Description 设d(x)为x的约数个数,给定N.M,求 Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M. O ...
- BZOJ 3994: [SDOI2015]约数个数和 [莫比乌斯反演 转化]
2015 题意:\(d(i)\)为i的约数个数,求\(\sum\limits_{i=1}^n \sum\limits_{j=1}^m d(ij)\) \(ij\)都爆int了.... 一开始想容斥一下 ...
- 【BZOJ3994】约数个数和(莫比乌斯反演)
[BZOJ3994]约数个数和(莫比乌斯反演) 题面 求\[\sum_{i=1}^n\sum_{j=1}^md(ij)\] 多组数据\((<=50000组)\) \(n,m<=50000\ ...
随机推荐
- poj 1769 Minimizing maximizer 线段树维护dp
题目链接 给出m个区间, 按区间给出的顺序, 求出覆盖$ [1, n] $ 至少需要多少个区间. 如果先给出[10, 20], 在给出[1, 10], 那么相当于[10, 20]这一段没有被覆盖. 令 ...
- latex列表
枚举.列举和描述 \begin{list_type} \item The first item \item The second item \item The third etc \ldots\end ...
- B2C 电商网站需要怎样的 ERP 系统
B2C 电商网站需要怎样的 ERP 系统 主要由如下一些系统组成:1.进销存系统,你的产品的采供销当然最好是由系统来实现:2.BI系统,BI包括所有的流量.订单.商品.库存.发货等所有数据节点,亦包含 ...
- J2SE知识点摘记(二十四)
覆写hashCode() 在明白了HashMap具有哪些功能,以及实现原理后,了解如何写一个hashCode()方法就更有意义了.当然,在HashMap中存取一个键值对涉及到的另外一个方法为equa ...
- material风格的日期/时间选择:SublimePicker
介绍: 一个material风格的view,提供了各种关于日期选择的功能,可以选择日期,选择时间,选择重复次数等,可以在不离开选择器的情况下在不同的选择界面间切换.其实这些功能是从5.0的日历中抠出来 ...
- [原]基于CAS实现单点登录(SSO):cas client端的退出问题
自从CAS 3.4就很好的支持了单点注销功能,配置也很简单. 之前版本因为在CAS服务器通过HttpClient发送消息时并未指定为POST方式,所以在CAS客户端的注销Filter中没有收到POST ...
- tomcat path配置
<pre name="code" class="html">demo:/root# curl http://192.168.32.42:8082/a ...
- Xcode 3.2.5免证书开发调试
Xcode 3.2.5免证书开发调试 xcode3.2.5 应该没人用了.这里做个保存而已. Xcode编译遇到过 Code Sign error: a valid provisioning prof ...
- 机器学习Matlab打击垃圾邮件的分类————朴素贝叶斯模型
该系列来自于我<人工智能>课程回顾总结,以及实验的一部分进行了总结学习机 垃圾分类是有监督的学习分类最经典的案例,本文首先回顾了概率论的基本知识.则以及朴素贝叶斯模型的思想.最后给出了垃圾 ...
- js获取当前年月日
function GetDate(){ var now = new Date(); var year = now.getFullYear(); //年var month = now.ge ...