hdu 2421 Deciphering Password(约数个数问题)

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);
    }
}




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115980.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • dm368 uboot烧写ubl卡住了_uboot教程

    dm368 uboot烧写ubl卡住了_uboot教程这三个参数均有UBOOT直接传递给内核,所以要想知道他们具体的作用,需要根系内核模块的结构。dm365_imp.oper_mode                   是指在内核模块中内存空间采用连续、或者不连续模式。davinci_capture.device_type             是你的捕获设备的设备类型davinci_enc_mngr.ch0_mode

    2022年8月13日
    5
  • 面试/笔试第一弹 —— 计算机网络面试问题集锦

    面试/笔试第一弹 —— 计算机网络面试问题集锦本文对面试/笔试过程中经常会被问到的一些关于计算机网络的问题进行了梳理和总结,一方面方便自己温故知新,另一方面也希望为找工作的同学们提供一个复习参考。关于这块内容的初步了解和掌握,建议大家读一读《图解HTTP》一书。

    2022年6月24日
    34
  • Python 常用string函数

    Python 常用string函数字符串中字符大小写的变换1.str.lower()//小写>>>'SkatE'.lower()'skat

    2021年12月24日
    48
  • 使用ExecuteReader时报错“阅读器关闭时尝试调用Read无效”的解决办法

    使用ExecuteReader时报错“阅读器关闭时尝试调用Read无效”的解决办法出现如下绿色字体出错的问题,是由于using使用过后数据库会自动关闭,出了using的作用域后,在调用的时候无法找到信息form1.cs        publicstaticSqlDataReaderExecuteReader(stringsql,paramsSqlParameter[]parameters)    {      stringconnStr…

    2022年6月20日
    65
  • 手把手教你制作机房三维场景(3D效果图)

    手把手教你制作机房三维场景(3D效果图)前言:随着信息技术的不断发展,大量数据中心机房的建设、监控软件已经成为机房管理者的重要武器,特别是机房效果图这一块,从简易的CAD到现在的3D效果图,从静态到三维动态的改进,机房监控软件基本上可以说是从无到有的一个过程,下面本文跟大家分享机房高大上的数据中心三维可视化管理软件的三维场景制作过程(俗称:3D效果图的制作过程)。以前的机房效果图现在的机房3D效果图数据中心可三维可视化管理软件,通过对现

    2022年6月2日
    147
  • pycharm批量注释代码_pycharm批量缩进快捷键

    pycharm批量注释代码_pycharm批量缩进快捷键我们使用pycharm的时候,会遇到写注释的情况,单独一行还没事,直接加个#就可以解决问题,但是需要注释掉多行的代码的时候,我们如果,还是一个人一个敲#,就会很费时间,下面介绍一下pycharm里面批量注释的方法。当我们想要注释掉多行代码时,只需要Ctrl+a选中这几行代码,然后继续**Ctrl+/**就可以完成注释,取消注释也是同样的方法。…

    2022年8月25日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号