hdu 4059 The Boss on Mars
题意
求1到之间所有与n互质的数的四次幂之和。
分析
分解n^5-(n-1)^5..可以求出1^4+2^4+...+n^4的公式S(n)=1/30*(n^5+15*n^2*(n+1)^2-10*n*(n+1)*(2*n+1)+15*n*(n+1)-6*n)
先求出S(n),利用容斥原理去掉是n的质因子的倍数的数的四次幂之和。。。
1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 #include<vector> 5 #define N 100100 6 #include<cstdio> 7 using namespace std; 8 typedef long long ll; 9 const ll mod=1000000007; 10 bool p[N]; 11 int s[N]; 12 vector<int>factor; 13 void prime(){ 14 memset(p,1,sizeof(p)); 15 for(int i=2;i*i<N;i++) 16 for(int j=i;i*j<N;j++) 17 p[i*j]=0; 18 s[0]=0; 19 for(int i=2;i<N;i++) 20 if(p[i])s[++s[0]]=i; 21 } 22 23 ll exgcd(int a,int b,ll &x,ll &y){ 24 if(b==0){ 25 x=1; 26 y=0; 27 return a; 28 } 29 ll d=exgcd(b,a%b,x,y); 30 ll t=x; 31 x=y; 32 y=t-(a/b)*y; 33 return d; 34 } 35 void div(ll n){ //分解因式 36 factor.clear(); 37 for(int i=1;s[i]*s[i]<=n;i++){ 38 if(n%s[i]==0){ 39 factor.push_back(s[i]); 40 while(n%s[i]==0)n/=s[i]; 41 } 42 } 43 if(n>1)factor.push_back(n); 44 } 45 46 ll calsum(ll n){ 47 ll a1=6*(n*n%mod)*(n*n%mod)%mod*n%mod; 48 ll a2=15*n%mod*n%mod*(n+1)%mod*(n+1)%mod; 49 ll a3=10*n%mod*(n+1)%mod*(2*n+1)%mod; 50 ll a4=15*n%mod*(n+1)%mod; 51 ll a5=6*n%mod; 52 ll ans=(a1+a2-a3+a4-a5)%mod; 53 return ans; 54 } 55 ll sum(ll n){ //求和 56 ll ans=calsum(n); 57 ll x,y; 58 ll d=exgcd(30,mod,x,y); 59 x*=ans; 60 x=(x%mod+mod)%mod; 61 return x; 62 } 63 64 ll Mod(ll a,ll b){ 65 return a*a%mod*a%mod*a%mod*b%mod; 66 } 67 68 void solve(ll n){ 69 div(n); 70 ll ans=sum(n); 71 int c=factor.size(); 72 for(int i=1;i<(1<<c);i++){//容斥原理 73 ll num=1; 74 int a=0; 75 int cnt=0; 76 int ii=i; 77 while(ii>0){ 78 if(ii&1){ 79 num*=factor[cnt]; 80 ++a; 81 } 82 ii>>=1; 83 ++cnt; 84 } 85 ll cc=Mod(num,sum(n/num)); 86 if(a&1){ 87 ans=(ans-cc+mod)%mod; 88 }else{ 89 ans=(ans+cc)%mod; 90 } 91 } 92 cout<<ans<<endl; 93 } 94 95 int main(){ 96 // freopen("test.out","w",stdout); 97 ll n,m; 98 int t; 99 prime(); 100 cin>>t; 101 while(t--){ 102 cin>>n; 103 solve(n); 104 } 105 return 0; 106 }
转载于:https://www.cnblogs.com/silver-bullet/archive/2012/10/11/2732287.html
hdu 4059 The Boss on Mars相关推荐
- HDU 4059 The Boss on Mars (容斥)(2011 Asia Dalian Regional Contest)
The Boss on Mars 思路 显然我们可以求得∑i=1ni4=6n5+15n4+10n3−n30\sum_{i = 1} ^{n} i ^ 4 = \frac{6n^5 + 15n^4 + ...
- hdu 4059 The Boss on Mars 容斥
题目链接 求出ai^4+a2^4+......an^4的值, ai为小于n并与n互质的数. 用容斥做, 先求出1^4+2^4+n^4的和的通项公式, 显然是一个5次方程, 然后6个方程6个未知数, 我 ...
- hdu 1800 Flying to the Mars
Flying to the Mars Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- hdu 1800 Flying to the Mars
Flying to the Mars Time Limit : 5000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) ...
- zoj 3547 The Boss on Mars
需要用到概率论的容斥定理以及计算1 ^ 4 + 2 ^ 4 + --+ n ^ 4的计算公式1^4+2^4+--+n^4=n(n+1)(2n+1)(3n^2+3n-1)/30 #pragma comm ...
- HDU-4059 The Boss on Mars 容斥定理
将与N不互质的数全部找出来,再应用容斥定理求得最后的结果.这题在求 a/b MOD c 的时候使用费马小定理等价于 a*b^c(-2) MOD c.用x/lnx 可以估计出大概有多少素数. 代码如下: ...
- c语言一维数组转化为二维矩阵,js将一维数组转化为二维数组
遇到的问题: 后端返回的是一组一维数组,但是需要展示的格式是二维数组,常见的场景举例:后台返回10个长度的数组,需要分成3个一组展示在banner上. 例:[1,2,3,4,5,6,7,8,9,10] ...
- c语言容斥原理,容斥原理 | 易学教程
容斥原理 \(|A_1\cup A_2\cup...\cup A_n|=\sum\limits_{1\le i\le n}|A_i|-\sum\limits_{1\le i 二项式反演 形式1 \(f ...
- 莫比乌斯,欧拉函数题目练习(完结)
Starttime:2020/11/16Start\ time:2020/11/16Start time:2020/11/16 Lastupdatetime:2020/11/28Last\ updat ...
最新文章
- 从零开始学ios开发(十二):Table Views(中)UITableViewCell定制
- SharePoint Adventures : Using Claims with Reporting Services
- LTE: UE特定的参考信号
- RabbitMQ使用详解
- 你真的会使用assert吗?
- echart 折线图设置y轴单位_如何让echarts中y轴的单位位于数值的右上角
- 用Broadcast广播在activity之间、fragment之间、activity和fragment之间相互传数据
- centos7 yum下载路径
- thinkPHP学习笔记
- 如何利用云原生技术构建现代化应用?
- Java并发Semaphore信号量的学习
- 1.SpringMVC 概述
- python可以手眼定标吗_手眼标定 相关实例(示例源码)下载 - 好例子网
- 《ASP网络编程从入门到精通》
- 阿里云解决方案架构师李晨:百万级价签系统的实时洞察与创新实践
- 人工智能基础——2.3.2产生式系统
- Scratch编程(九)扩展模块:翻译模块
- Android开发之自定义DataTimePicker(日期时间选择器)
- 导出Excel支持锁定表头
- 【js+html禁用截屏,打印,另存为】
热门文章
- html自定义实现文本编辑器,自定义开发富文本编辑器(Javascript实现点击插入内容到textarea光标处)...
- 4.5.1 RIP协议与距离向量算法
- DSP学习初阶的一些笔记
- mysql子查询为什么不走索引_解决MySQL中IN子查询会导致无法使用索引问题
- 机器学习-Andrew Ng课程笔记
- 从源码分析DEARGUI之add_color_int和4
- 语音识别|基于CNN+DFSMN(简化版:标量+无步长因子)的声学模型实现及代码开源(keras)
- 26期Linux20180531 单用户 救援模式 克隆虚拟机 linux机器相互登录
- JAVA post和get方式请求远程HTTP接口
- Beta冲刺随笔集合