• 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_ibi​is relatively-prime with the integer mm. And then calculate:

\displaystyle \sum_{i=1}^{p}a_{b_i}i=1∑p​abi​​

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

题目来源

ACM-ICPC 2018 沈阳赛区网络预赛

题意:

已知一个数列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【容斥】的更多相关文章

  1. ACM-ICPC 2018 沈阳赛区网络预赛 G Spare Tire(容斥)

    https://nanti.jisuanke.com/t/31448 题意 已知a序列,给你一个n和m求小于n与m互质的数作为a序列的下标的和 分析 打表发现ai=i*(i+1). 易得前n项和为 S ...

  2. ACM-ICPC 2018 沈阳赛区网络预赛 G. Spare Tire

    这题很好啊,好在我没做出来...大概分析了一下,题目大概意思就是求 问所有满足1<=i<=n且i与m互素的ai之和 最开始我们队的做法是类似线性筛的方法去筛所有数,把数筛出来后剩下数即可, ...

  3. 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} ...

  4. ACM-ICPC 2018 沈阳赛区网络预赛 G Spare Tire (素因子分解+容斥)

    . 样例输入复制 4 4 样例输出复制 14 #include<bits/stdc++.h> using namespace std; typedef long long ll; cons ...

  5. 2018 ICPC 沈阳网络赛

    2018 ICPC 沈阳网络赛 Call of Accepted 题目描述:求一个算式的最大值与最小值. solution 按普通算式计算方法做,只不过要同时记住最大值和最小值而已. Convex H ...

  6. 沈阳网络赛 F - 上下界网络流

    "Oh, There is a bipartite graph.""Make it Fantastic." X wants to check whether a ...

  7. 15ecjtu校赛1006 (dfs容斥)

    Problem Description 在平面上有一个n*n的网格,即有n条平行于x轴的直线和n条平行于y轴的直线,形 成了n*n个交点(a,b)(1<=a<=n,1<=b<= ...

  8. 【2019沈阳网络赛】G、Special necklace——自闭的物理题

    这道题让我差点怀疑自己高考没考过物理 题意中 he measures the resistance of any two endpoints of it, the resistance values ...

  9. 沈阳网络赛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 ...

随机推荐

  1. (转)S5pv210 HDMI 接口在 Linux 3.0.8 驱动框架解析 (By liukun321 咕唧咕唧)

    作者:liukun321 咕唧咕唧 日期:2014.1.18 转载请标明作者.出处:http://blog.csdn.net/liukun321/article/details/18452663 本文 ...

  2. thinkphp模板中无法给自定义函数传多个参数

    1.模板的用法 {:function(param1,param2,param3...)} 2.实例 <td>{:getChannelInfo($adminId,$v['sale_id']) ...

  3. ORACLE expdp/impdp导出实例

    服务器上以sys或system超级管理员登录. SQL>create directory expdp_dir as '/home/oracle/dmpdata';(dmpdata 需要建立.赋予 ...

  4. jquery把int类型转换成字符串类型的方法

    jQuery中把获取的number类型数据转换成字符串类型 var val=$(“#id).val(); If(typeof val==”number”){ val+=' '; }

  5. centos7 systemctl

    下机为systemctl指令systemctl enable *.service #开机运行服务systemctl disable *.service #取消开机运行systemctl start * ...

  6. Tomcat之JSP运行原理之小试牛刀

    最近空闲看了下JSP/Servlet,以前只知道用JSP,但是对其运行原理知之甚少,今在此做些笔记,以备查阅. 首先简要描述下其运行过程,然后结合Tomcat源码作简要分析. JSP运行过程: 第一步 ...

  7. ssh&scp指定密钥

    scp时指定密钥: scp -P22   -r -i ~/.ssh/dongjing-shanghai.pem root@kiri_pro01:/data/backup/back_from_japan ...

  8. web服务器http.server 【python】

    参考博客: http://lxneng.iteye.com/blog/492063 http://www.cnblogs.com/itech/archive/2011/12/31/2308697.ht ...

  9. Host ‘host_name’ is blocked

    参考:http://web2.0coder.com/archives/163 之前服务器遇到了这个错误: Host ‘host_name‘ is blocked because of many con ...

  10. Effective C++ —— 继承与面向对象设计(六)

    条款32 : 确定你的public继承塑模出is-a关系 以C++进行面向对象编程,最重要的一个规则是:public inheritance(公开继承)意味“is-a”(是一种)的关系.请务必牢记.当 ...