[NOIP2017模拟]Heal
来源:互联网 发布:淘宝中小卖家名单 编辑:程序博客网 时间:2024/05/20 10:20
2017.10.27 T3 2015
样例数据1
输入
2 3
输出
8
样例数据2
输入
8 8
输出
16711680
分析:T3很难,很难,难到你读不懂题,也就只难在读不懂题上。如果能读懂题目,这道题就是个容斥原理裸题,但是这道题TMD题面就是一篇记叙文,还是哲理类的!!!整道题的题面就占了一页,完全看不下去啊,而且在前面的题花的时间太多了,也没法慢慢理解这道题,就放弃了。
代码
不用看了,就是跳蚤加一个取模,优化了一下筛质数
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<string>#include<ctime>#include<cmath>#include<algorithm>#include<cctype>#include<iomanip>#include<queue>#include<set>using namespace std;long long getlong(){ long long sum=0,f=1; char ch; for(ch=getchar();(ch<'0'||ch>'9')&&ch!='-';ch=getchar()); if(ch=='-') { f=-1; ch=getchar(); } for(;ch>='0'&&ch<='9';ch=getchar()) sum=(sum<<3)+(sum<<1)+ch-48; return sum*f;}const int mo=1e9+7;long long n,m,tot,sushu[55];long long ans,tmp,a[55];long long ksm(long long x,long long y){ long long res=1;x=x%mo; for(;y;y=y>>1,x=x*x%mo) if(y&1) res=res*x%mo; return res;}void dfs(int cnt,int step,int num){ if(step>num) { long long res=m; for(int i=1;i<=num;++i) res/=a[i]; tmp=(tmp+ksm(res,n))%mo; return; } for(int i=cnt;i<=tot-num+step;++i) { a[step]=sushu[i]; dfs(i+1,step+1,num); }}int main(){ freopen("heal.in","r",stdin); freopen("heal.out","w",stdout); n=getlong(),m=getlong(); ans=ksm(m,n); long long mm=m; for(long long i=2;i*i<=mm;++i)//把O(n)的筛法改成了根号的筛法 if(mm%i==0) { sushu[++tot]=i; while(mm%i==0) mm/=i; } if(mm>1) sushu[++tot]=mm; for(int i=1;i<=tot;++i) { tmp=0; dfs(1,1,i); if(i&1) ans=(ans+mo-tmp)%mo; else ans=(ans+tmp)%mo; } cout<<ans<<'\n'; return 0;}
本题结。
阅读全文
0 0
- [NOIP2017模拟]Heal
- HEAL
- [NOIP模拟] Heal 再见POJ跳蚤
- [NOIP模拟][容斥原理][快速幂]Heal
- NOIP2017模拟赛1
- NOIP2017模拟赛8
- NOIP2017模拟赛9
- [NOIP2017模拟]切蛋糕
- [NOIP2017模拟]随机图
- [NOIP2017模拟]能源
- [NOIP2017模拟]电影
- [NOIP2017模拟]鸭舌
- [NOIP2017模拟]permut
- [NOIP2017模拟]beautiful
- [NOIP2017模拟]路径
- [NOIP2017模拟]流
- [NOIP2017模拟]subset
- [NOIP2017模拟]hello
- cocos creator 中数据储存的坑。。。
- 女神一秒变路人!腾讯研发出“一键卸妆”功能
- C++容器--- 顺序性容器<Vector>
- Algorithm-week9
- 函数指针的一个例子以及*p和p[0]的关系
- [NOIP2017模拟]Heal
- 算法基础--穷举
- 生成模糊图像
- LeetCode:Palindromic Substrings
- C++容器---关联式容器
- 漫画:如何破解MD5算法?
- 学习才是硬道理
- C++容器----容器适配器
- java学习系列2(并发锁问题-乐观锁与悲观锁以及乐观锁的一种实现方式-CAS)