沈阳网络赛G-Spare Tire【容斥】
- 17.64%
- 1000ms
- 131072K
A sequence of integer \lbrace a_n \rbrace{an} can be expressed as:
\displaystyle a_n = \left\{ \begin{array}{lr} 0, & n=0\\ 2, & n=1\\ \frac{3a_{n-1}-a_{n-2}}{2}+n+1, & n>1 \end{array} \right.an=⎩⎨⎧0,2,23an−1−an−2+n+1,n=0n=1n>1
Now there are two integers nn and mm. I'm a pretty girl. I want to find all b_1,b_2,b_3\cdots b_pb1,b2,b3⋯bp that 1\leq b_i \leq n1≤bi≤n and b_ibiis relatively-prime with the integer mm. And then calculate:
\displaystyle \sum_{i=1}^{p}a_{b_i}i=1∑pabi
But I have no time to solve this problem because I am going to date my boyfriend soon. So can you help me?
Input
Input contains multiple test cases ( about 1500015000 ). Each case contains two integers nn and mm. 1\leq n,m \leq 10^81≤n,m≤108.
Output
For each test case, print the answer of my question(after mod 1,000,000,0071,000,000,007).
Hint
In the all integers from 11 to 44, 11 and 33 is relatively-prime with the integer 44. So the answer is a_1+a_3=14a1+a3=14.
样例输入复制
4 4
样例输出复制
14
题目来源
题意:
已知一个数列a 和整数n, m
现在想知道1-n中所有与m互质的数 作为下标的a的和
思路:
预先打表处理的话内存不够 推公式能推出a[i] = (i + 1) * i【虽然我好像没有推出来...】
所以Sn也是可以推出来的
某一个数的倍数的a求和也是可以推的 因为是ki 那么提出一个k来 就可以代入公式求了
小于n 与m互质的数没有什么特殊的规律 但应该想到素数筛时的做法 用上容斥
先求出1-n所有的a的和 再减去所有与m不互质的数
用容斥来求不互质的数 是正是负与质因数的个数有关 如果是奇数个质因数之积的话就是加 偶数就是减
用到了乘法逆元的模板
cal()函数注释掉的部分是WA的 改成了题解的方法就AC了
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<stack>
#include<queue>
#include<map>
#include<vector>
#include<cmath>
#include<cstring>
#include<set>
//#include<bits/stdc++.h>
#define inf 0x7f7f7f7f7f7f7f7f
using namespace std;
typedef long long LL; const int maxn = 1e5 + ;
const LL mod = 1e9 + ;
LL inv6, inv2;
LL n, m; LL p[maxn];
int cnt;
void getprime(LL x)
{
cnt = ;
for (LL i = ; i * i <= x; i++) {
if (x % i == ) {
p[cnt++] = i;
}
while (x % i == ) {
x /= i;
}
}
if (x > ) {
p[cnt++] = x;
}
} void ex_gcd(int a, LL b, LL &d, LL &x, LL &y)
{
if(!b){
d = a;
x = ;
y = ;
}
else{
ex_gcd(b, a % b, d, y, x);
y -= x * (a / b);
}
} int mod_inverse(int a, LL m)
{
LL x, y, d;
ex_gcd(a, m, d, x, y);
return (m + x % m) % m;
} LL cal(LL n, LL k)
{
/*LL ans = n / k * (n / k + 1) % mod;
ans = ans * (2 * n / k + 1) % mod;
ans = ans * inv6 % mod * k % mod * k % mod;
ans = ans + k * (1 + n / k) % mod * n / k % mod * inv2 % mod;*/
n=n/k;
return (n%mod*(n+)%mod*(*n+)%mod*inv6%mod*k%mod*k%mod+n%mod*(n+)%mod*inv2%mod*k%mod)%mod;
//return ans;
} int main()
{
inv6 = mod_inverse(, mod);
inv2 = mod_inverse(, mod);
//cout<<mod_inverse(6, mod)<<endl<<mod_inverse(2, mod)<<endl;
while (scanf("%lld%lld", &n, &m) != EOF) {
memset(p, , sizeof(p));
getprime(m);
LL ans = ;
for(int i = ; i < ( << cnt); i++){
int flag = ;
LL tmp = ;
for(int j = ; j < cnt; j++){
if(i & ( << j)){
flag++;
tmp = tmp * p[j] % mod;
} }
tmp = cal(n, tmp) % mod;
if(flag % ){
ans = (ans % mod + tmp % mod) % mod;
}
else{
ans = (ans % mod - tmp % mod + mod) % mod;
}
}
printf("%lld\n", (cal(n, ) % mod - ans % mod + mod) % mod);
}
return ;
}
沈阳网络赛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 Spare Tire (素因子分解+容斥)
. 样例输入复制 4 4 样例输出复制 14 #include<bits/stdc++.h> using namespace std; typedef long long ll; cons ...
- 2018 ICPC 沈阳网络赛
2018 ICPC 沈阳网络赛 Call of Accepted 题目描述:求一个算式的最大值与最小值. solution 按普通算式计算方法做,只不过要同时记住最大值和最小值而已. Convex H ...
- 沈阳网络赛 F - 上下界网络流
"Oh, There is a bipartite graph.""Make it Fantastic." X wants to check whether a ...
- 15ecjtu校赛1006 (dfs容斥)
Problem Description 在平面上有一个n*n的网格,即有n条平行于x轴的直线和n条平行于y轴的直线,形 成了n*n个交点(a,b)(1<=a<=n,1<=b<= ...
- 【2019沈阳网络赛】G、Special necklace——自闭的物理题
这道题让我差点怀疑自己高考没考过物理 题意中 he measures the resistance of any two endpoints of it, the resistance values ...
- 沈阳网络赛D-Made In Heaven【k短路】【模板】
One day in the jail, F·F invites Jolyne Kujo (JOJO in brief) to play tennis with her. However, Pucci ...
随机推荐
- 第三百一十二节,Django框架,Cookie
第三百一十二节,Django框架,Cookie 注意:获取Cookie是在请求对象里处理,设置Cookie是在响应对象里处理 普通Cookieset_cookie()设置普通cookie 参数: ke ...
- ubuntu 12.04 LTS server 中文乱码【转】
ubuntu 12.04 LTS server 中文乱码 最近装了一台ubuntu 12.04 server装完后是没有桌面的,后来又手动安装了桌面,但进行后发现桌面是乱码,应该是缺少字体在googl ...
- 查看CentOS系统配置情况命令
系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # ho ...
- 【Deeplearning】关注书目
Deep Learning: A Practitioner's Approach http://www.amazon.com/Deep-Learning-Practitioners-Adam-Gibs ...
- ChemDraw Std 14如何标记同位素
ChemDraw软件是一款专业高效的化学绘图工具,能够绘制各种复杂的结构方程式,在基础化学.有机化学.材料化学等领域得到广泛应用.而ChemDraw Std 14 作为ChemDraw 的最新版本,增 ...
- electron-利用node开发桌面应用
简介 web前端语言的发展有目共睹, 从原来的pc web, 到后来的mobile SAP, 再到 nodejs,全站工程师应运而生. js快速而且稳健的发展让人不得不重视, 相应的前端开发人员的地位 ...
- 第四章 Spring.Net 如何管理您的类___统一资源访问接口
在前面章节有童鞋提到过 关于配置文件 Objects.xml 路径的相关问题,这些东西是 IResource 接口的一些内容,接下来就详细介绍一下 IResource 接口. IResource 接口 ...
- Tomcat 8(九)解读Tomcat组件的生命周期(Lifecycle)
Tomcat 8(七)解读Bootstrap介绍过.运行startup.bat.将引发Tomcat一连串组件的启动.事实上这一连串启动是通过组件的生命周期(Lifecycle)实现的 今天来看看Lif ...
- android学习之--网格视图(GridView)和图像切换器(ImageSwitcher)
GridView用于在界面上按行.列分布显示多个组件.GridView和ListView有共同父类:AbsListView. GridView与ListView的差别在于:ListV ...
- sencha touch 入门系列 (七)sencha touch 类系统讲解(上)
在mvc结构的基础上,sencha touch又使用了sencha公司为extjs4开发出来的类系统,在面向对象的编程语言中,类是对对象的定义,它描述了对象所包含的大量属性和方法. 跟面向对象语言类似 ...