ACM-ICPC 2018 沈阳赛区网络预赛 G Spare Tire (素因子分解+容斥)
.
样例输入复制
4 4
样例输出复制
14
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MOD=1e9+7,inv2=500000004,inv6=166666668;
ll n,m;
const int maxn=100000;
ll A(ll x) {
x %= MOD;
return ((x * x) + x) % MOD;
}
ll mul(ll a, ll b) {
a %= MOD, b %= MOD;
return (a *b) % MOD;
}
ll kA(ll t,ll k) {
ll res= (t+k*t)%MOD;
res = (res*k)%MOD;
res = (res*inv2)%MOD;
ll h = (mul(mul(k,k+1),2*k+1)*inv6)%MOD;
h = (h*t)%MOD;
h = (h*t)%MOD;
res = (res+h)%MOD;
return res;
}
ll a[maxn];
ll b[maxn];
void factor(ll n,ll &tot) {
ll temp,i,now;
temp=(ll)((double)sqrt(n)+1);
tot=0;
now=n;
for(i=2; i<=temp; ++i)if(now%i==0) {
a[++tot]=i;
b[tot]=0;
while(now%i==0) {
++b[tot];
now/=i;
}
}
if(now!=1) {
a[++tot]=now;
b[tot]=1;
}
}
int main() {
while(scanf("%d%d",&n,&m)!=EOF) {
ll all;
factor(m,all);
ll g=0;
for(int i=1; i<(1<<all); i++) {
int cnt=0,t=1;
for(int j=0; j<all; j++) {
if((i>>j)&1) {
t*=a[j+1];
cnt++;
}
}
if(cnt&1) {
if(n/t==0||t>n) continue;
g = (g+kA(t,n/t))%MOD;
} else {
if(n/t==0||t>n) continue;
g = (g-kA(t,n/t)+MOD)%MOD;
}
}
ll ans=g;
ll other = (mul(n, n + 1)*inv2 + mul(mul(n,n+1),2*n+1)*inv6)%MOD;
ans = (other - ans + MOD)% MOD;
cout<<ans<<endl;
}
return 0;
}
ACM-ICPC 2018 沈阳赛区网络预赛 G Spare Tire (素因子分解+容斥)的更多相关文章
- ACM-ICPC 2018 沈阳赛区网络预赛 G Spare Tire(容斥)
https://nanti.jisuanke.com/t/31448 题意 已知a序列,给你一个n和m求小于n与m互质的数作为a序列的下标的和 分析 打表发现ai=i*(i+1). 易得前n项和为 S ...
- ACM-ICPC 2018 沈阳赛区网络预赛 G. Spare Tire
这题很好啊,好在我没做出来...大概分析了一下,题目大概意思就是求 问所有满足1<=i<=n且i与m互素的ai之和 最开始我们队的做法是类似线性筛的方法去筛所有数,把数筛出来后剩下数即可, ...
- ACM-ICPC 2018 沈阳赛区网络预赛 G. Spare Tire (容斥原理)
可推出$a_n = n^2+n, $ 设\(S_n = \sum_{i=1}^{n} a_i\) 则 \(S_n = \frac{n(n+1)(2n+1)}{6} + \frac{n(n+1)}{2} ...
- ACM-ICPC 2018 沈阳赛区网络预赛 G 容斥原理
https://nanti.jisuanke.com/t/31448 解析 易得an=n*n+n O(1)得到前n项和 再删除与m不互素的数 我们用欧拉函数求出m的质因数 枚举其集合的子集 进行 ...
- 【ACM-ICPC 2018 沈阳赛区网络预赛 G】Spare Tire
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 让你求出1..n中和m互质的位置i. 让你输出∑ai 这个ai可以oeis一波. 发现是ai = i(i+1) 1..n中和m互质的 ...
- ACM-ICPC 2018 沈阳赛区网络预赛 J树分块
J. Ka Chang Given a rooted tree ( the root is node 11 ) of NN nodes. Initially, each node has zero p ...
- ACM-ICPC 2018 徐州赛区网络预赛 G. Trace (思维,贪心)
ACM-ICPC 2018 徐州赛区网络预赛 G. Trace (思维,贪心) Trace 问答问题反馈 只看题面 35.78% 1000ms 262144K There's a beach in t ...
- ACM-ICPC 2018 沈阳赛区网络预赛 K Supreme Number(规律)
https://nanti.jisuanke.com/t/31452 题意 给出一个n (2 ≤ N ≤ 10100 ),找到最接近且小于n的一个数,这个数需要满足每位上的数字构成的集合的每个非空子集 ...
- ACM-ICPC 2018 沈阳赛区网络预赛-K:Supreme Number
Supreme Number A prime number (or a prime) is a natural number greater than 11 that cannot be formed ...
随机推荐
- shell 选择打印部分输出内容
1. 根据进程pid查端口: lsof -i | grep pid 2. 根据端口port查进程(某次面试还考过): lsof -i:port 3. 根据进程pid查端口: netstat -n ...
- Springboot导出Excel并下载
引入相关依赖 <!--数据导出excel--> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> & ...
- 两个链表的第一个公共结点——牛客offer
题目描述: 输入两个链表,找出它们的第一个公共结点. 题目分析: 只是数据域相同不是公共节点.公共结点代表该节点在两个链表中的数据域和指针域都是相同的,这意味着从该公共节点开始,后面的结点都是两个链表 ...
- [POI2012]ROZ-Fibonacci Representation (贪心)
大意: 给定数$n$, 求将$n$划分为最少的斐波那契数的和或差. 每次取相邻$n$的斐波那契数一定最优, 考虑证明. 结论1:存在一个最优解,使得每个斐波那契数使用不超过1次.(考虑$2F_n=F_ ...
- Java EE javax.servlet中的RequestDispatcher接口
RequestDispatcher接口 public interface RequestDispatcher 一.介绍 定义一个对象,从客户端接收请求并将其发送到服务器上的任何资源(例如servlet ...
- BufferedImage类、Image类、Graphics类
BufferedImage Image是一个抽象类,BufferedImage是其实现类,是一个带缓冲区图像类,主要作用是将一幅图片加载到内存中(BufferedImage生成的图片在内存里有一个图像 ...
- Java多线程(二):Thread类
Thread类的实例方法 start() start方法内部会调用方法start方法启动一个线程,该线程返回start方法,同时Java虚拟机调用native start0启动另一个线程调用run方法 ...
- 区间dp 括号匹配问题
这道题目能用区间dp来解决,是因为一个大区间的括号匹配数是可以由小区间最优化选取得到(也就是满足最优子结构) 然后构造dp 既然是区间类型的dp 一般用二维 我们定义dp[i][j] 表示i~j这个区 ...
- C#Socket发16进制以及进制转换
string input = "Hello World!"; char[] values = input.ToCharArray(); foreach (char letter i ...
- C#进阶之WebAPI(一)
最近出去面试,被问到关于WebAPI的知识,因为项目中没有单独写过WebAPI,使用的时候是和mvc结合在一起使用的,所以,在我的印象中WebAPI和mvc是差不多的,这种答案当然不能让人满意了,于是 ...