P4619 [SDOI2018]旧试题

P4619 [SDOI2018]旧试题

题意:

求个式子:
(∑i=1A∑j=1B∑k=1Cd(i∗j∗k))mod(109+7)(\sum_{i=1}^{A}\sum_{j=1}^{B}\sum_{k=1}^{C}d(i*j*k))mod(10^9+7)(i=1Aj=1Bk=1Cd(ijk))mod(109+7)

题解:

原创博文1k纪念


很明显,莫比乌斯反演
马上更新


请添加图片描述
请添加图片描述
三元环链接
此等好题,作为第1000题的纪念

代码:

这个题让我写,我是真写不出来,非常适合练练莫比乌斯推导
代码条例非常清晰,很适合阅读

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N= 1e5 + 7;
const int M= 1e6 + 7;
const int mod= 1e9 + 7;
bool Prime[N];
int tot, P[N >> 3], mu[N];
void get_mu()
{mu[1]= 1;for (int i= 2; i <= 1e5; i++) {if (!Prime[i])P[++tot]= i, mu[i]= -1;for (int j= 1; P[j] * i <= 1e5 && j <= tot; j++) {Prime[P[j] * i]= 1;if (i % P[j] == 0) {mu[P[j] * i]= 0;break;}mu[P[j] * i]= -mu[i];}}
}
vector<int> ve[N];
unordered_map<int, bool> mp[N];
int T, Max, A, B, C, ans, p[N];
int sA[M], sB[M], sC[M], cnt, deg[N];
int gcd(int x, int y)
{return x == 0 ? y : gcd(y % x, x);
}
ll lcm(int x, int y)
{return 1ll * x / gcd(x, y) * y;
}
int ta, tb, tc, sum;
void cal(int a, int b, int c)//求后半程三个累加的答案 
{sum=(sum+ 1ll * p[a / ta] * p[b / tb] % mod * p[c / tc] % mod)% mod;
}
void get(int a, int b, int c)
{sum= 0;if (a == b && b == c)cal(A, B, C);else if (a == b || b == c || c == a) {cal(A, B, C);cal(C, A, B);cal(B, C, A);}else {//三个点的值都不一样,完全排列 cal(A, B, C);cal(A, C, B);cal(B, A, C);cal(B, C, A);cal(C, A, B);cal(C, B, A);}//记录后半程的答案 ans= (ans + (mu[a] * mu[b] * mu[c] * sum % mod + mod) % mod) % mod;//记录前半程答案 
}
int vis[N];
void solve()
{for (int i= 1; i <= cnt; i++) { int &u= sA[i], &v= sB[i];if (deg[u] < deg[v])swap(u, v);else if (deg[u] == deg[v] && u > v)swap(u, v);ve[u].push_back(i);//存的点的编号,为了方便后面取值 }for (int i= 1; i <= Max; i++) {//跑三元环 for (int j : ve[i])vis[sB[j]]= sC[j];for (int j : ve[i])for (int k : ve[sB[j]])if (vis[sB[k]]) {ta= vis[sB[k]];//分别是三个lcm tb= sC[j];tc= sC[k];get(i, sB[j], sB[k]);//三个点的值 }for (int j : ve[i])vis[sB[j]]= 0;}
}
void getans(int x)
{for (int l= 1, r; l <= x; l= r + 1) {r= (x / (x / l));p[x]= (p[x] + 1ll * (r - l + 1) * (x / l) % mod) % mod;//整除分块前缀和 }
}
int main()
{scanf("%d", &T);get_mu();for (int i= 1; i <= 1e5; i++)getans(i);while (T--) {scanf("%d%d%d", &A, &B, &C);ans= cnt= 0;Max= max(max(A, B), C);for (int i= Max; i >= 1; i--) {//i枚举的是三数的人最大公约数for (int j= i; j <= Max; j+= i) {if (!mu[j])continue;for (int k= j; 1ll*k*j /i<= 1ll * Max; k+= i) {//k*j/i就是这个两个数的lcm,要小于等于Max if (!mu[k])continue;if (!mp[j][k]) {
//                        printf("%d %d %d i=%d\n", j, k, j / i * k,i);++cnt;sA[cnt]= j;sB[cnt]= k;sC[cnt]= 1ll*j*k/ i  ;//sC是j和k的最小公倍数 deg[j]++;deg[k]++;mp[j][k]= 1;}}}}solve();for (int i= 1; i <= Max; i++) {ve[i].clear();mp[i].clear();deg[i]= 0;}printf("%d\n", (ans + mod) % mod);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/316099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#中使用Bogus创建模拟数据

原文&#xff1a;CREATING SAMPLE DATA FOR C#[1] 作者&#xff1a;Bruno Sonnino 译文&#xff1a;C#中使用Bogus创建模拟数据 译者&#xff1a; Lamond Lu背景在我每次写技术类博文的时候&#xff0c;经常做的一件事就是创建模拟数据。在每篇博文中&#xff0c;为了解释某些概…

CF1253E Antenna Coverage

CF1253E Antenna Coverage 题意&#xff1a; 现在有n个点&#xff0c;每个点的坐标为xi&#xff0c;以及一个范围值si&#xff0c;可以覆盖左右范围[xi-si,xisi] 每次操作&#xff0c;可以花费代价1让第i个天线的si增加1&#xff0c;每个天线都可以进行多次操作。现在请问你最…

使用BeetleX的TcpBenchmark工具进行百万设备模拟测试

其实TCP测试的工具有很多&#xff0c;那BeetleX工具所提供的特点又是什么呢&#xff1f;如果你需数十万的请求或模拟上百万的设备连接&#xff0c;那这个工具相信可以满足你的需要&#xff01;工具是基于BeetleX的基础功能扩展&#xff0c;支持多IP绑定可以轻松实现上百万的cli…

.net core Entity Framework 与 EF Core

重点讲 Entity Framework Core &#xff01;&#xff08;一&#xff09;Entity Framework它是适用于.NET 的对象关系映射程序 (ORM)&#xff0c;现在的EF6已经是久经沙场&#xff0c;并经历重重磨难&#xff0c;获得一致认可的数据访问技术&#xff08;原来加 Title 也挺有意思…

CF1253F Cheap Robot

CF1253F Cheap Robot 题意&#xff1a; 给你一张 N 个点的带权无向连通图&#xff0c;其中结点 1,2,…,k 为充电中心。 一个机器人在图中行走&#xff0c;假设机器人的电池容量为 c&#xff0c;则任何时刻&#xff0c;机器人的电量 x 都必须满足 c0≤x≤c。如果机器人沿着一…

asp.net core 3.0 gRPC框架小试

什么是gRPCgRPC是google开源的一个高性能、跨语言的RPC框架&#xff0c;基于HTTP2协议&#xff0c;采用ProtoBuf 定义的IDL。gRPC 的主要优点是&#xff1a;现代高性能轻量级 RPC 框架。协定优先 API 开发&#xff0c;默认使用协议缓冲区&#xff0c;允许与语言无关的实现。可用…

P1131 [ZJOI2007] 时态同步

P1131 [ZJOI2007] 时态同步 题意&#xff1a; 有一颗树&#xff0c;有一个点是激发器&#xff0c;从这个点开始可以产生一个激励电流&#xff0c;通过导线传向每一个它所连接的节点&#xff0c;经过一个边的花费为w[i],你有一个道具&#xff0c;每用一次可以让一个边的花费1&…

.Net开发者必知的技术类RSS订阅指南

作为一个.Net开发者&#xff0c;在如今这个信息大爆炸时代&#xff0c;网络上.net开发方面的信息浩如烟海(获取信息的渠道很多&#xff0c;比如各种 APP、公众号、聚合信息网站、博客园、InfoQ等等)&#xff0c;如何用有限的时间来获取并消化有效信息显得格外重要。虽然我们获取…

又一最大子段和

又一最大子段和&#xff08;牛客小白月赛38 &#xff09; 题意&#xff1a; 我们将一个数列{an}的最大字段和的值记为S(a),现在你可以对进行若干次操作&#xff0c;每次操作&#xff0c;你可以选择数列中的一个数字&#xff0c;将其改为[−10100,10100][-10^{100},10^{100}][…

我的微服务观,surging 2.0将会带来多大的改变

Surging 自2017年6月16日开源以来&#xff0c;已收到不少公司的关注或者使用&#xff0c;其中既有以海克斯康超大型等外企的关注&#xff0c;也不乏深圳泓达康、重庆金翅膀等传统行业的正式使用&#xff0c;自2019年年初&#xff0c;surging2.0 便已正式进入研发阶段&#xff0…

corefx 源码学习:SqlClient 是如何同步建立 Socket 连接的

在昨天的技术周会上发现 EnyimMemcached 中建立 Socket 连接的代码有问题&#xff0c;今天坐车的时候在手机上阅读 .net core 2.2 的 SqlClient 中同步建立 Socket 连接的代码 SNITcpHandle.cs#L180 学习了一下。建立 Socket 连接需要处理2个问题&#xff1a;1&#xff09;处理…

NetCore + SignalR 实现日志消息推送

哈喽大家周一好呀&#xff0c;感觉好久没有写文章了&#xff0c;上周出差了一次&#xff0c;感觉还是比坐办公室好的多&#xff0c;平时在读一本书《时生》&#xff0c;感兴趣的可以看看?......这几天翻看 NetCore 相关知识扩展的时候&#xff0c;发现了久违的一个知识点 ——…

使用Entity Framework Core访问数据库(DB2篇)

上一篇讲了一些EF Core访问Oracle的坑。&#xff08;感兴趣请移步&#xff1a;使用Entity Framework Core访问数据库&#xff08;Oracle篇&#xff09;&#xff09;这篇主要讲一下关于EF Core访问DB2的一揽子~问题。本篇采用DBFirst直接生成实体。关于EF Core DB2 的官方文档&a…

Linux中以单容器部署Nginx+ASP.NET Core

正如前文提到的&#xff0c;强烈推荐在生产环境中使用反向代理服务器转发请求到Kestrel Http服务器&#xff0c;本文将会实践将Nginx --->ASP.NET Core 部署架构容器化的过程。Nginx->ASP.NET Coe部署架构容器化在Docker中部署Nginx--->ASP.NETCore 有两种选择&#x…

领域驱动设计学习之路—DDD的原则与实践

本文是我学习Scott Millett & Nick Tune编著的《领域驱动设计模式、原理与实践》一书的学习笔记&#xff0c;一共会分为4个部分如下&#xff0c;此文为第1部分&#xff1a;领域驱动设计的原则与实践战略模式&#xff1a;在有界上下文之间通信战术模式&#xff1a;创建有效的…

.NET Core中使用Dapper操作Oracle存储过程最佳实践

为什么说是最佳实践呢&#xff1f;因为在实际开发中踩坑了&#xff0c;而且发现网上大多数文章给出的解决方法都不能很好地解决问题。尤其是在获取类型为OracleDbType.RefCursor&#xff0c;输出为&#xff1a;ParameterDirection.Output数据的时候。网上千篇一律的说写一个Ora…

CanalSharp.AspNetCore v0.0.4-支持输出到MongoDB

一、多样输出支持CanalSharp.AspNetCore是一个基于CanalSharp的适用于ASP.NET Core的一个后台任务组件&#xff0c;它可以随着ASP.NET Core实例的启动而启动&#xff0c;目前采用轮询的方式对Canal Server进行监听&#xff0c;获得MySql行更改&#xff08;RowChange&#xff09…

CF1039C Network Safety

CF1039C Network Safety 题意&#xff1a; 题解&#xff1a; 如果我们同时选中a&#xff0c;b两个点&#xff0c;无论异或什么值&#xff0c;都不会影响图的安全性&#xff0c;因为图本来就是安全的 破坏图的安全性只有一种情况&#xff0c;那就是选了a&#xff0c;没选b&…

使用Jenkins来实现内部的持续集成流程(下)

目录配置项目构建添加任务添加源代码地址和登录凭据添加构建触发器 TFS添加WebHook 添加构建步骤后端UI API端 配置项目构建1添加任务2添加源代码地址和登录凭据添加源代码地址和登录凭证此图没有填写凭证时显示的错误点击Credential后面的添加 填写能访问源代码的用户名和密码…

.NET和Docker ,比翼双飞

DockerCon 2019本周将在旧金山举行 &#xff0c;DockerCon 是从业者、贡献者、维护者、开发者和容器生态系统学习、网络和创新的一站式活动。 .NET 团队博客发布了《一起使用.NET和Docker - DockerCon 2019更新》&#xff1a;https://devblogs.microsoft.com/dotnet/using-net-…