hdu-2421 Deciphering Password 数学姿势
给定A,B,对于A^B的每一个因子,M为其因子的因子数的三次方求和。
容易推导得出A^B的每一个因子都是A的质因子的组合(质因子可重复利用),其因子数自然等于所使用的每个质因子的数量乘积。
假设A由质因子a1,a2,a3组合而成,对应数量为k1,k2,k3,那么A的因子数为(k1+1)*(k2+1)*(k3+1),同理A的因子的因子数为(k1+1)*(k2+1)*k3+1,(k1+1)*k2*(k3+1),k1*(k2+1)*(k3+1),(k1+1)*k2*k3以此类推。
我们可以发现其为(1+2+3...k1+1)*(1+2+3...k2+1)*(1+2+3...k3+1)的展开。对于这里的每一项,我们可以用求和公式(n*(n+1)/2)^2来求解。
对于拆解一个数的质因数,我们只需要枚举到srqt(n)即可,因为至多只有一个质因数大于sqrt(n) n不断做除法剩下的数即是这个质因数,如果有两个质因数x1,x2大于sqrt(n),那一定有n>=x1*x2与x1>sqrt(n) x2>sqrt(n)相悖。
#include <iostream> #include <cstring> #include <string> #include <queue> #include <vector> #include <map> #include <set> #include <stack> #include <cmath> #include <cstdio> #include <algorithm> #define LL long long using namespace std; const LL N = 1000005; const LL mod = 10007; LL cube(LL num) {return (num*(num + 1) / 2)%mod*(num*(num + 1) / 2); } vector<LL> su; bool vis[N]; int main() {//cin.sync_with_stdio(false); LL a,b;fill(vis, vis + N, true);vis[0] = vis[1] = false;for(LL i=2;i<N;i++)if (vis[i]){su.push_back(i);for (LL j = i * 2; j < N; j *= i)vis[i] = false;}int cas = 1;while (scanf("%lld%lld",&a,&b)!=EOF){map<LL, LL> mp;for (LL i = 0; i < su.size() && su[i]*su[i] <= a; i++){while (a%su[i] == 0)cout << su[i] << endl, mp[su[i]]++, a /= su[i];}if (a > 1)mp[a]++;LL ans = 1;for (map<LL, LL>::iterator it = mp.begin(); it != mp.end(); it++){it->second *= b, it->second++;it->second %= mod;//cout << it->second << endl;ans *= cube(it->second);ans %= mod;}printf("Case %d: %lld\n", cas++, ans);//cout << "Case " << cas++<<": ";//cout << ans << endl; }return 0; }
转载于:https://www.cnblogs.com/LukeStepByStep/p/7452281.html
hdu-2421 Deciphering Password 数学姿势相关推荐
- HDU——1013(字符串+数学)Digital Roots
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1013 题意:给你一个整数列表,让位数上的数相加得到一个新的数,若为个位数则输出,若不为个位数重复此操作 ...
- HDU 4611 Balls Rearrangement 数学
Balls Rearrangement 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=4611 Description Bob has N balls ...
- HDU 5985 Lucky Coins 数学
Lucky Coins 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5985 Description Bob has collected a lot ...
- hdu 5312 Sequence(数学推导——三角形数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5312 Sequence Time Limit: 2000/2000 MS (Java/Others) ...
- HDU 6217 BBP Formula (数学)
题目链接: HDU 7217 题意: 题目给你可以计算 \(π\) 的公式: \(\pi = \sum_{k=0}^{\infty}[\frac{1}{16^k}(\frac{4}{8k+1})-(\ ...
- HDU - 2825 Wireless Password (AC自动机 + 状压dp)
题目链接 题意 求至少包含KKK个给定字符串长度为NNN的字符串 思路 把所有可能的字符串建AC自动机,遍历所有节点dp[i][j][k]dp[i][j][k]dp[i][j][k] 表示以节点jjj ...
- HDU - 6641 TDL(数学)
Problem Description For a positive integer n, let's denote function f(n,m) as the m-th smallest inte ...
- hdu 2825 Wireless Password AC自动机+状态DP
时间卡得紧,写成递推可以做一些优化 //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<cs ...
- HDU - 2825 Wireless Password(AC自动机+状压dp)
题目链接:点击查看 题目大意:给出 m 个匹配串,问长度为 n 的字符串中,至少包含 k 个匹配串(可重叠)的字符串有多少个 题目分析:考虑到n,m,k都特别小,所以可以先用AC自动机将状态关系转移出 ...
最新文章
- Annotataion
- 获取Executor提交的并发执行的任务返回结果的两种方式/ExecutorCompletionService使用...
- Chord算法实现具体
- /etc/ld.so.conf.d/目录下文件的作用
- python输出日志到文件_【已解决】Python中,如何让多个py文件的logging输出到同一个日志log文件...
- flink中的java匿名函数修改为实名函数
- 一个屌丝程序猿的人生(七十七)
- opencv-api SIFT_create()
- GitHub详解(转)
- 电脑硬件检测软件排名列前茅:试试整合了当下最好的硬件检测软件的图吧工具箱吧 | 图吧工具箱在哪里下载
- git 本地拉取远程分支、合并分支某次提交、删除远程分支提交日志
- 【信号用指数、正弦和余弦表示的原因】
- 【车间调度】柔性作业车间调度问题的研究方法
- 上位机开发之三菱Q系列PLC通信实践
- 勒索病毒肆虐的原因分析
- kafka sasl java_Kafka安装及开启SASL_PLAINTEXT认证(用户名和密码认证)
- 【HTML5】网页实用技巧3:将方形图片设置成圆形后,添加圆形虚线边框
- 文献管理软件Mendeley Reference Manager使用方法
- 计算机毕业设计 SSM在线电影售票系统(源码+论文)
- c#windows编程视频教程
热门文章
- laravel操作$request中值删除、增加、替换等方式的代码实例
- thinkphp3.2.3版本的数据库增删改查实例
- c语言黄建灯第七章答案,c语言实训大纲.doc
- python交通流预测代码_使用ARIMA模型进行的短时交通流预测和结果分析
- Python笔记-对字符串进行URL编码及解码
- 云主机开放端口笔记-mysql远程连接需要的步骤
- Java笔记-多线程相关
- 系统架构工作笔记-数据展示进程与读取数据进程分离,实现低耦合(展示软件可适用任意厂家数据库)
- Qt文档阅读笔记-对Style Plugin Example实例的解析
- 单片机自动调光C语言,51单片机触控调光程序C语言