HDU 4059 容斥初步练习
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#define LL long long
using namespace std;
const LL Mod=;
const LL Maxn=;
LL Factor[],cnt,n,m,tot,Rev,Kase,Prime[Maxn];
bool vis[Maxn]; inline LL Quick_Pow(LL x,LL y)
{
LL Ret=;
while (true)
{
if (y&) Ret=(Ret*x)%Mod;
x=(x*x)%Mod; y>>=;
if (y==) break;
}
return Ret;
} inline void Make_Prime()
{
memset(vis,false,sizeof(vis));
for (LL i=;i<Maxn;i++)
{
if (!vis[i]) Prime[++tot]=i;
for (LL j=;j<=tot && Prime[j]*i<Maxn;j++)
{
vis[Prime[j]*i]=true;
if (i%Prime[j]==) break;
}
}
} inline LL Calc(LL N)
{
LL Ret=N;
Ret=(Ret*(N+))%Mod;
Ret=(Ret*(*N+))%Mod;
Ret=(Ret*((*N*N+*N-)%Mod))%Mod;
Ret=(Ret*Rev)%Mod;
return Ret;
}
inline void Get_Factor(LL P)
{
cnt=;
for (LL i=;i<=tot && Prime[i]<=P;i++)
if (P%Prime[i]==)
{
Factor[++cnt]=Prime[i];
while (P%Prime[i]==) P/=Prime[i];
}
if (P!=) Factor[++cnt]=P;
}
inline LL Pow2(LL x) {return (x*x)%Mod;}
inline LL Pow4(LL x) {return (Pow2(x)*Pow2(x))%Mod;}
LL Dfs(LL d,LL start)
{
LL Ret=;
for (LL i=start;i<=cnt;i++)
{
LL tmp=Pow4(Factor[i]);
Ret=(Ret+(tmp*Calc(d/Factor[i]))%Mod)%Mod;
Ret=(Ret-(tmp*Dfs(d/Factor[i],i+))%Mod+Mod)%Mod;
}
return Ret;
}
inline LL Solve()
{
Get_Factor(n);
return ((Calc(n)%Mod)-(Dfs(n,))%Mod+Mod)%Mod;
}
int main()
{
scanf("%lld",&Kase);
Rev=Quick_Pow(,Mod-);
Make_Prime(); for (LL kase=;kase<=Kase;kase++)
{
scanf("%lld",&n);
printf("%lld\n",Solve());
}
return ;
}
HDU 4059
求的是与n互质的数的四次方的和。 首先四次方有个公式。把1~n的然后减去n的约数的四次方即可,这就需要用到容斥了。
Sum(2)-(Sum(2*3)+Sum(2*5)+Sum(2*7)..)+(Sum(2*3*5)+Sum(2*3*7)+Sum(3*5*7)..)-..
HDU 4059 容斥初步练习的更多相关文章
- HDU 4135 容斥
问a,b区间内与n互质个数,a,b<=1e15,n<=1e9 n才1e9考虑分解对因子的组合进行容斥,因为19个最小的不同素数乘积即已大于LL了,枚举状态复杂度不会很高.然后差分就好了. ...
- HDU 2841 容斥 或 反演
$n,m <= 1e5$ ,$i<=n$,$j<=m$,求$(i⊥j)$对数 /** @Date : 2017-09-26 23:01:05 * @FileName: HDU 284 ...
- HDU 1695 容斥
又是求gcd=k的题,稍微有点不同的是,(i,j)有偏序关系,直接分块好像会出现问题,还好数据规模很小,直接暴力求就行了. /** @Date : 2017-09-15 18:21:35 * @Fil ...
- hdu 1220 容斥
http://acm.hdu.edu.cn/showproblem.php?pid=1220 Cube Time Limit: 2000/1000 MS (Java/Others) Memory ...
- Co-prime HDU - 4135_容斥计数
Code: #include<cstdio> #include<cstring> #include<cmath> #include<iostream> ...
- How many integers can you find HDU - 1796_容斥计数
Code: #include<cstdio> using namespace std; typedef long long ll; const int R=13; ll a[R]; ll ...
- 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 4059 The Boss on Mars
The Boss on Mars Problem's Link Mean: 给定一个整数n,求1~n中所有与n互质的数的四次方的和.(1<=n<=1e8) analyse: 看似简单,倘若 ...
- HDU - 4059: The Boss on Mars (容斥 拉格朗日 小小的优化搜索)
pro: T次询问,每次给出N(N<1e8),求所有Σi^4 (i<=N,且gcd(i,N)==1) ; sol: 因为N比较小,我们可以求出素因子,然后容斥. 主要问题就是求1到P的 ...
随机推荐
- 挂载windows共享文件夹
sudo mount -o username=用户名,password=密码 //本机IP/共享目录 ~/挂载目录
- 关于easyui遇到的一些问题
一.TreeGrid在IE浏览器中不能刷新 在创建TreeGrid的时候将method: 'get' 改成 method: 'post' , 然后再$('#ProductGrid').treegrid ...
- 1. Two Sum I & II & III
1. Given an array of integers, return indices of the two numbers such that they add up to a specific ...
- Java项目:学生成绩管理系统(二)
学生成绩管理系统(二):项目介绍 一.设计要求: 1.1 简单的图形界面登录功能. 1.2 对数据库的的信息的查询功能. 1.3 对数据库的的信息的修改功能. 1.4 对数据库的的信息的删除功能. 1 ...
- iOs基础篇(二十二)—— UIPickerView、UIDatePicker控件的使用
一.UIPickerView UIPickerView是一个选择器控件,可以生成单列的选择器,也可生成多列的选择器,而且开发者完全可以自定义选择项的外观,因此用法非常灵活. 1.常用属性 (1)num ...
- 恢复 root 本地无权限 Access denied for user 'root'@'localhost' (using password: NO)
调试远程的时候,覆盖了本地的权限.导致 本地无法登陆系统表. 远程连接上mysql 执行以下命令恢复. 恢复root 本地管理权限 使用空密码 grant all on *.* to roo ...
- 荣品四核4412开发板的USB摄像头问题
RP4412开发板是荣品电子研发的一款三星四核Exynos4412评估板开发板,支持WIFI+LAN上网.蓝牙4.0.4G上网.500万自动对焦摄像头.GPS.网卡.音频,1080P HDMI音视频同 ...
- bzoj 3504: [Cqoi2014]危桥
#include<cstdio> #include<iostream> #include<cstring> #define M 100009 #define inf ...
- μC/OS-Ⅲ系统中的任务就续表
μC/OS-Ⅲ支持任意数目的不同优先级.一般情况下64级优先级就足够了. 在μC/OS-Ⅲ中所有已经就绪等待运 行的任务都被放入一个我为的“就续表”(ready list)中.就续表包括两部分:一个就 ...
- 修改UISearchBar的背景颜色
当你看到这篇博客你就已经发现了用_searchBar.backgroundColor = [UIColor clearColor];来设置UISearchBar的颜色完全没有效果: 并且,有些方法是想 ...