The Boss on Mars

Problem's Link


Mean:

给定一个整数n,求1~n中所有与n互质的数的四次方的和.(1<=n<=1e8)

analyse:

看似简单,倘若自己手动推公式的话,还是需要一定的数学基础.

总的思路:先求出sum1=(1^4)+(2^4)+...(n^4),再求出sum2=(1~n中与n不互质的数的四次方的和),answer=sum1-sum2.

如何求sum1呢?

有两种方法:

  1.数列差分.由于A={Sn}={a1^4+a2^4+...an^4}对应一个五阶线性差分方程,只需要求出这个五阶线性差分方程的系数即可.

  有关数列差分求幂数和通项的知识,click here.

  2.利用低次幂数和来递推高次幂数和公式.

最终求得的公式为:Sn=(n*(n+1)*(2n+1)*(3*n*n+3*n-1))/30.

注意,上式中最后有除法,而我们的最终答案要对1e9+7取余,所以需要求30对1e9+7的模逆元.

由于1e9+7是质数,所以可以直接使用结论:

  a % m = (b/c)%m

  a % m = b * c ^(m-2)%m ( m为素数 )

证明:

   b = a * c % m;

则有:b = a % m * c %m;

根据费马小定理:

   a^(p-1)= 1 %p;(p是素数)

可推出:

  a%m

  = a*1%m = a * c^(m-1)%m

  = a*c*c^(m-2)%m

  = b*c^(m-2)%m;

-------------------------------------------------------------------------

求sum2时需要用容斥,当然直接容斥暴力统计的话也会超时.

注意到:

    2^4+4^4+6^4+8^4 = 2^4*(1^4+2^4+3^4+4^4) .

所以再求sum2时仍然可以使用幂数求和公式,这样一来时间复杂度就非常低了.

Time complexity: O(logn)

view code

;
;
;
     ; )
           )
                       n) ;
     )
           ;
           ;
           ;
     )
           ;
           )))));
     ; ;
           ;
           ; )
                 )
           ;
}

数论 + 容斥 - HDU 4059 The Boss on Mars的更多相关文章

  1. hdu 4059 The Boss on Mars 容斥

    题目链接 求出ai^4+a2^4+......an^4的值, ai为小于n并与n互质的数. 用容斥做, 先求出1^4+2^4+n^4的和的通项公式, 显然是一个5次方程, 然后6个方程6个未知数, 我 ...

  2. 数论 + 容斥 - HDU 1695 GCD

    problem's Link mean 给定五个数a,b,c,d,k,从1~a中选一个数x,1~b中选一个数y,使得gcd(x,y)=k. 求满足条件的pair(x,y)数. analyse 由于b, ...

  3. hdu 4059 The Boss on Mars

    The Boss on Mars Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  4. HDU 4059 The Boss on Mars 容斥原理

    The Boss on Mars Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  5. HDU 4059 The Boss on Mars(容斥原理 + 四次方求和)

    传送门 The Boss on Mars Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  6. HDU 4059 The Boss on Mars(容斥原理)

    The Boss on Mars Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  7. hdu 4059 The Boss on Mars(纳入和排除)

    http://acm.hdu.edu.cn/showproblem.php?pid=4059 定义S = 1^4 + 2^4 + 3^4+.....+n^4.如今减去与n互质的数的4次方.问共降低了多 ...

  8. POJ 1150 The Last Non-zero Digit 数论+容斥

    POJ 1150 The Last Non-zero Digit 数论+容斥 题目地址: id=1150" rel="nofollow" style="colo ...

  9. HDU - 2204 Eddy's爱好 (数论+容斥)

    题意:求\(1 - N(1\le N \le 1e18)\)中,能表示成\(M^k(M>0,k>1)\)的数的个数 分析:正整数p可以表示成\(p = m^k = m^{r*k'}\)的形 ...

随机推荐

  1. python常用代码积累

    一.文件操作 1.判断一个目录是否存在,若不存在则创建 if not os.path.isdir(new_path): os.makedirs(new_path) 2.新建一个文件 f=open(&q ...

  2. 阿里云服务器 centos7 ftp安装

    昨天租了阿里云服务器一个月,想玩一下linux系统,结果想用ftp上传本地文件的时候,发现用不了,结果在安装配置的时候折腾了几个小时,在网上查了无数的资料,有的说要改配置文件,有的说要关防火墙,说啥的 ...

  3. java反射--获取成员变量信息

    获取成员变量信息 代码及说明: public static void printFieldMessage(Object obj) { //要获取类的信息,首先要获取类的类类型 Class c=obj. ...

  4. 使用Nginx负载均衡搭建高性能.NETweb应用程序(转)

    一.遇到的问题 当我们用IIS服务器部署了一个web应用以后,当很多用户高并发访问的时候,客户端响应就会很慢,客户的体验就会很差,由于IIS接受到客户端请求的时候,就会创建一个线程,当线程达到几千个时 ...

  5. Android WiFi直连 双向通信

    代码地址如下:http://www.demodashi.com/demo/13965.html 原文地址:https://blog.csdn.net/VNanyesheshou/article/det ...

  6. 【laravel54】创建控制器、模型

    1.创建控制器(可以带上下一级目录)=>(需要带Controller后缀) > php artisan make:controller self/StudentController; 2. ...

  7. JSP页面输出的几种方式:

    1. 内置九大对象之out         下载图片 2. <%= %> JSP输出表达式      JSP中出现大量脚本 3. response.getWriter()        n ...

  8. oracle创建用户及赋权

    1,创建表空间 create tablespace hxzg_data logging datafile 'C:\app\data\hxzg_data.dbf' size 50m autoextend ...

  9. IntelliJ IDEA 学习(三):IntelliJ IDEA 快捷键、配置优化

    一.两种方式可以设置快捷键: 1)setting -> keymap 想找到有关Idea工具的菜单或其他功能的话,可以再这里找到对应的快捷键   2)setting -> Editor - ...

  10. 点滴积累【JS】---JS实现仿百度模糊搜索效果

    效果: HTML代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="In ...