[bzoj] 2694 Lcm || 莫比乌斯反演_weixin_30706691的博客-程序员秘密

原题

定义整数a,b,求所有满足条件的lcm(a,b)的和:
1<=a<=A
1<=b<=B
∀n>1,n2†gcd(a,b)(即任意n>1,\(n^2\)不是gcd(a,b)的约数)
输出答案对2^30取模。


要求gcd(a,b)不能含平方因子,所以gcd(a,b)一定是mu不等于0的数。
那么我们设所有满足条件的数为p
其余与bzoj 2693是一样的,推倒见这里!

//敲公式累死了……

#include<cstdio>
#include<algorithm>
#define N 4000000
#define p (1<<30)
using namespace std;
int n,m,t,prime[N+10],miu[N+10],sum[N+10];
bool f[N+10];

void init()
{
    miu[1]=1;
    for (int i=2;i<=N;i++)
    {
    if (!f[i])
    {
        prime[++prime[0]]=i;
        miu[i]=-1;
    }
    for (int j=1;j<=prime[0] && prime[j]*i<=N;j++)
    {
        f[i*prime[j]]=1;
        if (i%prime[j]==0)
        {
        miu[i*prime[j]]=0;
        break;
        }
        miu[i*prime[j]]=-miu[i];
    }
    }
    for (int i=1;i<=N;i++)
    if (miu[i])
        for (int j=1;j*i<=N;j++) sum[j*i]+=miu[j]*j*j*i;
    for (int i=1;i<=N;i++) sum[i]+=sum[i-1];
}

int calc(int x,int y)
{
    int t1=(x+1)*x/2,t2=(y+1)*y/2;
    return t1*t2;
}

int main()
{
    scanf("%d",&t);
    init();
    while (t--)
    {
    scanf("%d%d",&n,&m);
    if (n>m) swap(n,m);
    int ans=0;
    for (int i=1,last;i<=n;i=last+1)
    {
        last=min(n/(n/i),m/(m/i));
        ans=ans+(sum[last]-sum[i-1])*calc(n/i,m/i);
    }
    printf("%d\n",(ans%p+p)%p);
    }
    return 0;
}

转载于:https://www.cnblogs.com/mrha/p/8204931.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30706691/article/details/98307576

智能推荐

python 删除print()两个输出语句之间的空格_python清除print输出_郭有理salute的博客-程序员秘密

python 删除print()两个输出语句之间的空格。回文诗:静思伊久阻归期忆别离时闻漏转。

避免物理内存碎片化 - ZONE_MOVABLE_kickxxx的博客-程序员秘密

在2.6.20-rc4中,mel Gorman提交了的patch引入了ZONE_MOVABLE,引入这个pseudo zone的目的是为了防止zone内存碎片化ZONE_MOVABLE表示这个zone仅能被带有__GFP_HIGHMEM和__GFP_MOVABLE标志的分配使用。这就使得所有non-movable页面都限制在单一的内存区,而movable的分配则由其他的内存区满足。Mo

linux文本处理三剑客之awk的使用_Jepson2017的博客-程序员秘密

awk命令awk是linux中处理文本的强大工具,或者说是一种专门处理字符串的语言,它有自己的编码格式。awk的强大之处还在于能生成强大的格式化报告。命令格式awk [options] 'program' fileprogram:pattern {action statements;…}pattern和action:pattern部分决定动作语句何时触发及触发事件 BEGIN, ENDaction statements:对数据进行处理,放在{}内指明 print, pri

Vue初学日记Day1_海叶丶的博客-程序员秘密

Vue初学日记Day11.配置环境参考:https://www.jianshu.com/p/454c3a7c5602node-v10.16.0-x64.msi链接:https://pan.baidu.com/s/1DX1kCrf3IsYUiVjSKDZKAA 提取码:gzcnVSCodeUserSetup-x64-1.35.1.exe链接:https:...

Xshell远程连接linux的完整步骤_xshell怎么链接linux_Dora_Shao的博客-程序员秘密

1. 首先下载并且Xshell2.在linux上安装ssh软件包1)命令:sudo apt-get install openssh-server2)检查是否安装成功:ps -e |grep ssh3)开启ssh server:/etc/init.d/ssh start3. shell 设置1)进入linux输入命令获取ip:ifconfig2)如下图修改3)输入...

随便推点

HTML5+CSS3实战(二)——照片墙效果_aNotFound404的博客-程序员秘密

现在的前端做的越来越炫酷了,各种特效让人眼花缭乱。 前几天逛网站的时候,看见有个照片墙的效果不错,就想着自己也做做看。 首先上图: 照片呈不规则的角度摆放,当鼠标放在照片上时,照片会放大; 鼠标离开照片时,照片回到原来的状态。 其实只要用CSS3的一些属性完全就可以实现这样的效果,无须一行js代码~~代码实现: html代码部分的代码,就是一个div里放上几张图片而已。<div cl

Unity VR:如何获得手柄的按键信息_unity获取手柄按键_每日出拳老爷子的博客-程序员秘密

背景在引入OpenVR模块后,发现在StartUp时接收Inputdevice信息竟然失灵了。得到的device list count竟然一直是零。原因考虑是生命周期的问题,也就是说OpenVR模块下,进入应用时还无法感应device,需要在进入应用后持续感知。虽然StartUp时拿inputDevice,获得的Device数是零,但在进入游戏后手柄的交互动作是生效的,这也可以印证我之前的判断。解决方法在Update层面持续感应Device,获得后给相应变量赋值就可以开始用自己定义的Contro

Java老白整理的程序猿知识图谱_快乐是的博客-程序员秘密

Java老白整理的程序猿知识图谱说明:基于普通应用,依据请求发送到处理为主线梳理。1. 网络tcp/ip,http,https2. 负载nginx3. 容器tomcat4. 应用Spring,SpringBoot5. 外围5.1 存储MySQL,Mybatis,ConnectionPool,ShardingShere,主键生成(雪花,发号器)Redis5.2 RPCDubbo,Netty,SpringCloud5.3 MQRockitMQ,IO多路复用,Kaf

钉钉接口在java项目中如何调用_java钉钉接口调用_起伏的潮浪的博客-程序员秘密

下载SDK打开钉钉开放平台,链接: link下载后有得两个jar包把jar包放到项目里在项目的src目录下新建一个lib包,把这个两个jar包放在里面依赖jar包打开项目的pom.xml文件,添加jar包依赖&lt;dependency&gt; &lt;groupId&gt;com.taobao.top&lt;/groupId&gt; &lt;artifactId&gt;top-api-sdk-dev&lt;/artifactId&gt;

卫剑钒:《大教堂与集市》被过誉了吗?_腾源会的博客-程序员秘密

1997 年 5 月 27 日,开源运动的领导者之一 Eric S·Raymond 发表文章,阐述了两种不同的自由软件开发模式,并将其比喻为「大教堂模式」与「集市模式」。文章一经发表便引起轰动,随后在 1999 年出版成书,这就是被称为「开源圣经」的《大教堂与集市》。作为开源运动的独立宣言,《大教堂与集市》是当代技术领域最重要的著作之一。但此书多年来与国内读者无缘,201...

推荐文章

热门文章

相关标签