https://nanti.jisuanke.com/t/31448

解析 易得an=n*n+n O(1)得到前n项和  再删除与m不互素的数  我们用欧拉函数求出m的质因数  枚举其集合的子集 进行容斥

n*n+n+2n*2n+2n+3n*3n+3n=(1+4+9)*n*n+(1+2+3)*n 所以也可以O(1)得到。

AC代码

#include <bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define all(a) (a).begin(), (a).end()
#define fillchar(a, x) memset(a, x, sizeof(a))
#define huan printf("\n");
#define debug(a,b) cout<<a<<" "<<b<<" ";
using namespace std;
const int maxn=1e5+,inf=0x3f3f3f3f;
typedef long long ll;
typedef pair<int,int> pii;
const ll mod=1e9+;
int yin[maxn],cnt;
void euler(ll n) //返回euler(n)
{
ll res=n,a=n;
cnt=;
for(ll i=; i*i<=a; i++)
{
if(a%i==)
{
yin[cnt++]=i;
res=res/i*(i-);//先进行除法是为了防止中间数据的溢出 爆int
while(a%i==)
a/=i;
}
}
if(a>)
res=res/a*(a-),yin[cnt++]=a;
}
ll powmod(ll n,ll m)
{
ll ans=;
while(m>)
{
if(m&)
ans=ans*n%mod;
m = m>>;
n = n*n%mod;
}
return ans;
}
ll inv2=powmod(,mod-);
ll inv6=powmod(,mod-);
ll getsum1(ll n)
{
return n*(n+)%mod*(*n%mod+)%mod*inv6%mod;
}
ll getsum2(ll n)
{
return n*(n+)%mod*inv2%mod;
}
int main()
{
ll n,m;
while(scanf("%lld%lld",&n,&m)!=EOF)
{
euler(m);
ll ans=(getsum1(n)+getsum2(n))%mod;
for(int i=; i<(<<cnt); i++)
{
ll temp=,jishu=;
for(int j=; j<cnt; j++)
{
if(i&(<<j))
temp*=yin[j],jishu++;
}
if(temp==)continue;
ll bei=n/temp;
ans=(ans+powmod(-,jishu)*temp*temp%mod*getsum1(bei)%mod+mod)%mod;
ans=(ans+powmod(-,jishu)*temp*getsum2(bei)%mod+mod)%mod;
}
printf("%lld\n",ans);
}
}

最新文章

  1. .NET Core中合并Expression&lt;Func&lt;T,bool&gt;&gt;的正确姿势
  2. c中的数组与字符串
  3. JDK自带方法实现AES对称加密
  4. HDU 4770 Lights Against DudelyLights
  5. vim 学习日志(2):set的使用方法
  6. 书签(Bookmarks)
  7. hdu 3047 Zjnu Stadium(加权并查集)2009 Multi-University Training Contest 14
  8. JVM内存状况查看方法和分析工具
  9. ExtJS4.2学习(16)制作表单(转)
  10. Android常用Manager整理
  11. Python 基础-python-列表-元组-字典-集合
  12. Codeforces 159D Palindrome pairs
  13. td文字过长部分显示,鼠标移动显示全部内容
  14. Java学习记录第一章
  15. h1b期间回国须知
  16. [CQOI 2010]扑克牌
  17. 正则表达式中的re.S
  18. 存储树形的数据表转为Json
  19. 元类编程-- metaclass
  20. jQuery单选多选按钮选中美化特效

热门文章

  1. tomcat 的log4j配置问题
  2. 洛谷 P1455 搭配购买
  3. 一个SAP开发人员的双截棍之路
  4. docker 新手入门 (阿里镜像仓库的使用)
  5. chrome ubuntu启动不了
  6. 二分 || UOJ 148 跳石头
  7. PHP05 PHP语言基础
  8. Moebius for SQLServer负载均衡
  9. 为什么JavaScript里面0.1+0.2 === 0.3是false
  10. 第二章:C++简单程序设计