code force 1228C
算是一题普通数论+思维题吧。
大概很多人是被题意绕晕了。
思路:
首先常规操作求出X的质因子。
然后题目要求的是,X的每个质因子p,在g(i,p)的连乘。i∈[1,n];
我们转换下思维,不求每一个g(i,p)中最终是哪些 p的幂次,而是反求 每个p的幂次对结果的贡献。
显而易见,p^k在1~n的出现的次数就是 [n/(p^k)].
这样枚举所有质因子,计算中再利用快速幂取模便可以得到答案
//#pragma comment(linker, "/STACK:1024000000,1024000000")
//#pragma GCC optimize(2)
#include <bits/stdc++.h> using namespace std;
typedef double dou;
typedef long long ll;
typedef pair<int, int> pii;
typedef map<int, int> mii; #define pai acos(-1.0)
#define M 200007
#define inf 0x3f3f3f3f
#define mod 1000000007
#define IN inline
#define W(a) while(a)
#define lowbit(a) a&(-a)
#define left k<<1
#define right k<<1|1
#define lson L, mid, left
#define rson mid + 1, R, right
#define ms(a,b) memset(a,b,sizeof(a))
#define Abs(a) (a ^ (a >> 31)) - (a >> 31)
#define random(a,b) (rand()%(b+1-a)+a)
#define false_stdio ios::sync_with_stdio(false),cin.tie(0),cout.tie(0) ll x, n;
ll ans = ;
vector<ll>num; void init(ll tmp) {
for (ll i = ; i * i <= tmp; i++) {
if (tmp % i == ) {
num.push_back(i);
W(tmp % i == )tmp /= i;
}
}
if (tmp != )num.push_back(tmp);
} ll Pow(ll base, ll sup) {
ll sum = ;
W(sup) {
if (sup & )sum = (sum * base) % mod;
sup >>= ;
base = (base * base) % mod;
}
return sum % mod;
} int main() {
false_stdio;
cin >> x >> n;
init(x);
for (auto p : num) {
ll tmp = ;
W(tmp <= n / p) {//条件应该理解为 tmp*p<=n,而n%p==0,所以可以利用除法防止爆精度
tmp *= p;
ans = (ans * Pow(p, n / tmp)) % mod;
}
}
cout << ans << endl;
return ;
}
code force 1228C的更多相关文章
- pycharm debug后会出现 step over /step into/step into my code /force step into /step out 分别表示
		1.debug,全部打印 2.打断点debug,出现单步调试等按钮,只运行断点前 3.setup over 调试一行代码 4.setup out 运行断点后面所有代码 5.debug窗口显示调试按钮 ... 
- 【Code Force】Round #589 (Div. 2) D、Complete Tripartite
		题目链接 大致题意 把一个图分成三块,要求任意两块之间是完全图,块内部没有连线 分析 首先根据块内没有连线可以直接分成两块 假定点1是属于块1的,那么所有与点1连接的点,都不属于块1:反之则是块1的 ... 
- code force 424 A - Office Keys
		There are n people and k keys on a straight line. Every person wants to get to the office which is l ... 
- code force 403C.C. Andryusha and Colored Balloons
		C. Andryusha and Colored Balloons time limit per test 2 seconds memory limit per test 256 megabytes ... 
- code force 403B.B. The Meeting Place Cannot Be Changed
		B. The Meeting Place Cannot Be Changed time limit per test 5 seconds memory limit per test 256 megab ... 
- code force 401B. Game of Credit Cards
		B. Game of Credit Cards time limit per test 2 seconds memory limit per test 256 megabytes input stan ... 
- Code Force 21B Intersection
		B. Intersection time limit per test1 second memory limit per test256 megabytes inputstandard input o ... 
- Code Force 429B Working out【递推dp】
		Summer is coming! It's time for Iahub and Iahubina to work out, as they both want to look hot at the ... 
- .htaccess 基础教程(三)RewriteCond标志符,RewriteRule适用的标志符
		1.利用 .htaccess 防止盗链 如果不喜欢别人在他们的网页上链接自己的图片.文档的话,也可以通过htaccess的指令来做到.当然这样也可以对你的网站服务器压力变小! 这次先给出‘代码’,然后 ... 
随机推荐
- other#一些问题的列表
			centos7及以后修改hostname, hostnamectl set-hostname centos7 centos7之前修改hostname, vi /etc/sysconfig/networ ... 
- ahk键盘增强✨✨✨
			ahk键盘增强✨✨✨ ahk的一个键盘增强脚本,仅在winwods下可用,长期更新 仓库链接 首先感谢ahk的大神们,这个工具能极大地增加生产力 功能简介 myahk旨在增强windows下的键盘功能 
- 0108 spring的申明式事务
			背景 互联网的金融和电商行业,最关注数据库事务. 业务核心 说明 金融行业-金融产品金额 不允许发生错误 电商行业-商品交易金额,商品库存 不允许发生错误 面临的难点: 高并发下保证: 数据一致性,高 ... 
- 解决d7在更高版本上运行乱码问题,或者是调用更高版本的dll
			将String类型改成WideString类型即可 
- DFS技巧 折半搜索
			#include<iostream> #include<string> #include<cmath> #include<cstring> #inclu ... 
- (最详细)JAVA如何连接虚拟机的HBASE和hadoop(JAVA如何远程访问虚拟机HBASE)
			第一步: 首先把虚拟机和你的主机(本地电脑)弄通这样本地机器才能访问虚拟机里面的内容 我用的虚拟机为 VMware Workstation linux 为 centeros 补充一点虚拟机设置 1 ... 
- Spark技术学院-进去能学到啥?
			Spark技术学院是什么? 主要是浪尖,前腾讯现阿里的大神一起搞的知识分享基地,旨在帮助大家由入门到精通spark,hbase,kafka大数据重要的框架,还有给入门小白指点入门方法,分享入门资料,对 ... 
- Eclipse新建Maven中创建src文件夹报The folder is already a source folder错误解决办法
			问题: 解决办法:右击项目->Build Path->Configure Build Path选择(missing)文件夹remove,然后重新New Source Folder 
- 六十二、SAP中的字符串运算符与文本拼接
			一.代码如下 二.输出效果如下 
- 【转】美团 MySQL 数据实时同步到 Hive 的架构与实践
			文章转载自公众号 美团技术团队 , 作者 萌萌 背景 在数据仓库建模中,未经任何加工处理的原始业务层数据,我们称之为ODS(Operational Data Store)数据.在互联网企业中,常见的 ... 
