【欧拉函数】CF1731E

news2024/10/5 17:21:23

Problem - E - Codeforces

题意

思路

对于 k 次操作,gcd(u, v) = k + 1,代价的贡献就是二元组 (u, v)的个数 * (k + 1)

那么就要我们求二元组个数

这个是个很经典的欧拉函数的套路,可以用线性筛把欧拉函数求出来,然后求个前缀和 s[i] 就是

1 ~ i 的所有数中 (u, v)满足 gcd(u, v) = 1的二元组个数

容易发现,操作从k大到小的代价一定是最小的

那么去算贡献即可

#include <bits/stdc++.h>

#define int long long

constexpr int N = 1e6 + 10;
constexpr int mod = 998244353;
constexpr int Inf = 0x3f3f3f3f;

int n, m;
int len = 0;
int phi[N];
int s[N];
int prime[N], vis[N];

void P_init(int n) {
	phi[1] = 0;
	for (int i = 2; i <= n; i ++) {
		if (!vis[i]) prime[++len] = i, phi[i] = i - 1;
		for (int j = 1; i <= n / prime[j]; j ++) {
			vis[i * prime[j]] = 1;
			if (i % prime[j] == 0) {
				phi[i * prime[j]] = phi[i] * prime[j];
				break;
			}else {
				phi[i * prime[j]] = phi[i] * phi[prime[j]];
			}
		}
	}
	for (int i = 1; i <= 1e6; i ++) s[i] = s[i - 1] + phi[i];
}
void solve() {
	std::cin >> n >> m;
	int ans = 0;
	for (int k = n - 1; k >= 1; k --) {
		int d = std::min(s[n / (k + 1)] / k, m / k);
		m -= d * k;
		ans += d * (k + 1);
	}
	if (m) {
		std::cout << -1 << "\n";
	}else {
		std::cout << ans << "\n";
	}
}
signed main() {
	std::ios::sync_with_stdio(false);
	std::cin.tie(nullptr);

	int t = 1;
	P_init(1e6);
	std::cin >> t;
	while (t--) {
		solve();
	}
	return 0;
}

Code:

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

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

相关文章

动手学深度学习——第四次

梯度下降是在机器学习中用于寻找最佳结果&#xff08;即曲线最小值&#xff09;的一种迭代优化算法。 最小化loss&#xff0c;只需要将参数沿着梯度相反的方向前进一个步长&#xff0c;就可以实现目标函数&#xff08;loss function&#xff09;的下降。这个步长 η \etaη 又称…

在antd里面渲染MarkDown并且自定义一个锚点目录TOC(重点解决导航目录不跟随文档滚动的问题)

一、整体思路 由于有很多很长的文档需要渲染&#xff0c;我觉得用MarkDown的方式会比较适合管理&#xff0c;所以这两天测试了一下在antd里面集成MarkDown的渲染模块。 总体思路参考&#xff1a; https://blog.csdn.net/Sakuraaaa_/article/details/128400497 感恩大佬的倾情付…

技术分享 | 某下一代防火墙远程命令执行漏洞分析及防护绕过

0x01 概述 最近&#xff0c;某下一代防火墙曝光了远程代码执行漏洞。此漏洞通过绕过身份认证和注入 cookie 的方式来执行系统命令&#xff0c;公开的利用方式受到诸多限制且命令执行无回显&#xff0c;并且当目标机器不出网时&#xff0c;该漏洞利用方式便无法发挥作用&#x…

C语言——有 15 个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”

完整代码&#xff1a; /* 有 15 个数按由大到小顺序存放在一个数组中&#xff0c;输入一个数&#xff0c;要求用折半查找法找出 该数是数组中第几个元素的值。如果该数不在数组中&#xff0c;则输出“无此数”。*/ #include<stdio.h>//折半查找法&#xff0c;n是查找的那…

超宽带技术在汽车领域的应用

随着科技的不断发展&#xff0c;超宽带&#xff08;Ultra-Wideband, UWB&#xff09;技术在各个领域展现出了强大的潜力&#xff0c;其中汽车领域更是受益匪浅。UWB技术以其高精度的定位能力、高速的数据传输和低功耗的特点&#xff0c;为汽车行业带来了许多创新。本文将探讨UW…

在Python的虚拟环境中卸载eric6的方法

问题描述 之前在电脑的Python虚拟环境中安装了PyQt5及相应的界面设计器eric6。当时安装eric6后&#xff0c;没成功运行&#xff0c;提示少一个什么系统文件。我已在旁边的台式机上安装了较新版的PyQt6&#xff0c;决定不再用老版本的eric6&#xff0c;于是我需在笔记本电脑上卸…

C#WPF嵌入字体实例

本文介绍C#WPF嵌入字体实例。 首先创建项目 添加Resources文件夹,添加字体文件,字体文件属性:生成操作为Resources,复制到输出目录:不复制 字体的使用可以采用以下两种方法: 方式一 直接引用 FontFamily="./Resources/#幼圆" 方式二 定义资源 <Applica…

微信小程序:js处理一段文字,根据句号或者分号进行换行

一、根据句号和分号进行换行 效果 代码 wxml <view><text>{{remark}}</text> </view> js 核心代码 var repalce_remark remark.replace(/[&#xff1b;。]/g, "$&\n"); // 使用正则表达式进行替换 remark 是待替换的字符串。/[&am…

APP移动出海必备神器,MobPush提供海外消息智能推送一站式解决方案

随着国内移动应用市场的趋于饱和&#xff0c;海外新兴市场成为越来越多移动应用开发者的进一步提升APP市场占有率的不二之选。据统计&#xff0c;中国应用开发者中有79.1%计划出海。但如何利用消息推送实现与用户的深度绑定仍然存在较为一定问题。在国外&#xff0c;应用开发者…

深度学习:激活函数曲线总结

深度学习&#xff1a;激活函数曲线总结 在深度学习中有很多时候需要利用激活函数进行非线性处理&#xff0c;在搭建网路的时候也是非常重要的&#xff0c;为了更好的理解不同的激活函数的区别和差异&#xff0c;在这里做一个简单的总结&#xff0c;在pytorch中常用的激活函数的…

如何使用爬虫做一个网站

​ 大家如果有兴趣做网站&#xff0c;在买了VPS&#xff0c;部署了wordpress&#xff0c;配置LNMP环境&#xff0c;折腾一番却发现内容提供是一个大问题&#xff0c;往往会在建站的大&#xff08;da&#xff09;道&#xff08;keng&#xff09;上泄气 &#xff0c;别怕&#xf…

找免费商用字体,就上这5个网站,再也不怕侵权了。

很多新手设计师没有版权意识&#xff0c;网上找了字体直接使用结果被发律师函&#xff0c;造成巨大损失&#xff0c;建议大家使用前先去查询一下这款字体是否能商用&#xff0c;另外就是去找一些可以免费商用的字体使用。如何才能找到免费商用字体呢&#xff1f; 下面我就把我…

迅镭激光万瓦切割设备中标全球轨交装备龙头中国中车

轨道交通装备被称之为国之重器&#xff0c;历经60多年的发展&#xff0c;我国轨交装备制造业已成为自主创新程度最高、国际创新竞争力最强、产业带动效应最明显的行业之一。 而承担我国现代化轨道交通装备研发制造的中国中车股份有限公司(以下称“中国中车”)&#xff0c;也在用…

微前端qiankun接入Vue和React项目

主应用&#xff1a;Vue3Webpack 1、创建主应用&#xff1a; npx vue create main-vue3-app 2、安装qiankun npx yarn add qiankun 3、项目中使用的vue、vue-router、qiankun依赖如下&#xff0c;webpack版本为5.x 4、在根目录下创建vue.config.js const { defineConfig }…

一张逻辑图讲清楚OS在做什么:浅谈OS

本文旨在通过思维导图的方式、对os主要的知识点简短介绍&#xff0c;让读者能短时间快速把os是什么、干什么给串起来。当别人问起来时&#xff0c;可以用3-5分钟讲清楚。如果读者对os有更加深入的兴趣&#xff0c;可点对点针对某一内容再做进一步研究。通常对于互联网从业者来说…

TSINGSEE青犀老旧小区升级改造AI+视频监控方案

一、背景与需求 近年来&#xff0c;政府高度重视城镇老旧小区改造工作&#xff0c;强调要加快老旧小区改造&#xff0c;不断完善城市管理和服务&#xff0c;彻底改变粗放型管理方式&#xff0c;让人民群众在城市生活得更方便、更舒心、更美好。老旧小区升级改造面临以下问题&a…

绿米Aqara S1【妙控开关 S1E】的破解方法

概述 为了更好地向友商学习,我们采购了绿米的一块妙控开关 S1E的屏幕,用来研究。 首先上图看一下他的设计及推广的说明: 产品详情,参见Aqara的官方网站: 具体链接:妙控开关 S1E|Aqara 全屋智能 硬件概要 这里我就直接上硬件的说明了。 官方的设备参数如下: 我来写…

SRS srs-bench

1 srs-bench 音视频压测工具&#xff0c;包括RTMP/FLV/WebRTC/GB28181等&#xff0c;未来还会完善。 SB(SRS Bench) is a set of benchmark and regression test tools, for SRS and other media servers, supports HTTP-FLV, RTMP, HLS, WebRTC and GB28181. For RTMP/HLS/F…

7.MySQL复合查询

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 复合查询 基本查询回顾 多表查询 自连接 子查询 单行子查询 多行子查询 多列子查询 在from子句中使用子查询 合并查询 union union all 实战OJ 复合查询 前面我们讲解的mysql表的查询都是对一张表进行查询…

图像恢复介绍(持续更新)

前言 噪声的产生是信号在采集、传输以及记录过程中&#xff0c;受到成像设备自身因素和外界环境的影响而产生的。现实中的噪声是随机分布的&#xff0c;事实上&#xff0c;噪声无法完全去除&#xff0c;只能使得重现信号尽可能的接近原始信号&#xff0c;因此&#xff0c;去噪严…