给出2个数a, b,求LCM(a,b) + LCM(a+1,b) + .. + LCM(b,b)。
例如:a = 1, b = 6,1,2,3,4,5,6 同6的最小公倍数分别为6,6,6,12,30,6,加在一起 = 66。
由于结果可能很大,输出Mod 10^9 + 7的结果。(测试数据为随机数据,没有构造特别坑人的Test)
Input
第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 50000)
第2 - T + 1行:每行2个数a, b,中间用空格分隔(1 <= a <= b <= 10^9)
Output
共T行,输出对应的最小公倍数之和Mod 10^9 + 7的结果。
Input示例
3
1 6
10 15
41 90
Output示例
66
675
139860
—————————————————————————————————
这道题可以转化一下公式变成莫比乌斯反演

d*mu(d) 因为是积性函数 所以可以直接推 这样就完成辣2333
#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
const int M=1e5+,mod=1e9+,P=(mod+)/,mx=4e4+;
using std::max;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int T,n,p[M],cnt,h[M],pri[mx],xp;
LL v,ans,vis[mx],l;
void dfs(int step,LL T,LL g){
if(step==cnt+){
ans=(ans+((+n/T)*(n/T)/-(+l/T)*(l/T)/)%mod*g%mod)%mod;
return ;
}
LL sum=;
dfs(step+,T*sum,g);
for(int i=;i<=h[step];i++){
sum=sum*p[step];
dfs(step+,T*sum,g*(-p[step]));
}
}
int main(){
T=read();
for(int i=;i<=mx;i++)if(!vis[i]){
pri[++xp]=i; vis[i]=;
for(int j=*i;j<=mx;j+=i) vis[j]=;
}
while(T--){
cnt=; ans=;
l=read()-; n=read(); v=n;
for(LL x=;pri[x]*pri[x]<=v;x++)if(v%pri[x]==){
p[++cnt]=pri[x]; h[cnt]=;
while(v%pri[x]==) v/=pri[x],h[cnt]++;
}
if(v!=) p[++cnt]=v,h[cnt]=;
dfs(,,); ans=(ans%mod+mod)%mod;
printf("%lld\n",n*ans%mod);
}
return ;
}
 
 

51nod 1190 最小公倍数之和 V2的更多相关文章

  1. 51nod 1190 最小公倍数之和 V2【莫比乌斯反演】

    参考:http://blog.csdn.net/u014610830/article/details/49493279 这道题做起来感觉非常奇怪啊--头一次见把mu推出来再推没了的-- \[ \sum ...

  2. 51nod 1238 最小公倍数之和 V3

    51nod 1238 最小公倍数之和 V3 求 \[ \sum_{i=1}^N\sum_{j=1}^N lcm(i,j) \] \(N\leq 10^{10}\) 先按照套路推一波反演的式子: \[ ...

  3. 51NOD 1238 最小公倍数之和 V3 [杜教筛]

    1238 最小公倍数之和 V3 三种做法!!! 见学习笔记,这里只贴代码 #include <iostream> #include <cstdio> #include < ...

  4. 51nod 1363 最小公倍数之和 ——欧拉函数

    给出一个n,求1-n这n个数,同n的最小公倍数的和.例如:n = 6,1,2,3,4,5,6 同6的最小公倍数分别为6,6,6,12,30,6,加在一起 = 66. 由于结果很大,输出Mod 1000 ...

  5. 【51Nod 1190】最小公倍数之和 V2

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1190 \[ \begin{aligned} &\sum_{i=a ...

  6. 51nod - 1363 - 最小公倍数之和 - 数论

    https://www.51nod.com/Challenge/Problem.html#!#problemId=1363 求\(\sum\limits_{i=1}^{n}lcm(i,n)\) 先换成 ...

  7. [51nod1190]最小公倍数之和V2(莫比乌斯反演)

    题解 传送门 题解 我是真的不明白这玩意儿是怎么跟反演扯上关系的-- 首先 \[ \begin{align} ans &=b\sum_{d|b}{1\over d}\sum_{i=a}^{b} ...

  8. 51nod 1238 最小公倍数之和 V3 【欧拉函数+杜教筛】

    首先题目中给出的代码打错了,少了个等于号,应该是 G=0; for(i=1;i<=N;i++) for(j=1;j<=N;j++) { G = (G + lcm(i,j)) % 10000 ...

  9. [51Nod 1238] 最小公倍数之和 (恶心杜教筛)

    题目描述 求∑i=1N∑j=1Nlcm(i,j)\sum_{i=1}^N\sum_{j=1}^Nlcm(i,j)i=1∑N​j=1∑N​lcm(i,j) 2<=N<=10102<=N ...

随机推荐

  1. 读写INI文件操作类

    详情介绍:http://zh.wikipedia.org/wiki/INI%E6%96%87%E4%BB%B6 示例: 下面是一个虚拟的程序,其INI文件有两个小节,前面的小节是用来设置拥有者的信息, ...

  2. Delphi 的绘图功能[8] - TextOut、TextWidth、TextHeight

    unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...

  3. 路由分发原则 get最终传递给get post最终传递给post

  4. 2011 Multi-University Training Contest 7 - Host by ECNU

    AC: F I. rank 40/88. 开场看了F发现是个简单的DP,随便写了一下WA,,,发现把样例倒着输就过不了了...原来是忘了最后的时候开始上课的话可能上不了多久... 想到一个简洁的状态方 ...

  5. 【bzoj2060】[Usaco2010 Nov]Visiting Cows拜访奶牛 树形dp

    题目描述 经过了几周的辛苦工作,贝茜终于迎来了一个假期.作为奶牛群中最会社交的牛,她希望去拜访N(1<=N<=50000)个朋友.这些朋友被标号为1..N.这些奶牛有一个不同寻常的交通系统 ...

  6. (二)MySQL学习笔记

    1.视图 视图是一系列select语句返回的可视化结果集,是一张虚拟表.更多介绍请查看http://tool.oschina.net/apidocs/apidoc?api=mysql-5.1-zh 视 ...

  7. C++中Set的使用

    /* #include <string> // 使用 string 类时须包含这个文件 #include <iostream> // 这个就加上去吧.c++的输入和输出. us ...

  8. 【刷题】SPOJ 1812 LCS2 - Longest Common Substring II

    A string is finite sequence of characters over a non-empty finite set Σ. In this problem, Σ is the s ...

  9. POJ1474:Video Surveillance——题解

    http://poj.org/problem?id=1474 题目大意:给按照顺时针序的多边形顶点,问其是否有内核. —————————————————————————————— (和上道题目一模一样 ...

  10. UVA.10305 Maximum Product (暴力)

    UVA.10305 Maximum Product (暴力) 题意分析 直接枚举起点和重点,然后算出来存到数组里面,sort然后取最大值即可. 代码总览 #include <iostream&g ...