Educational Codeforces Round 173 (Rated for Div. 2) - Codeforces

Educational Codeforces Round 173 (Rated for Div. 2) - Codeforces

Problem - A - Codeforces

签到题目

Problem - B - Codeforces

数学

被小学奥数薄纱力…

给出一个由 n ! n! n! d d d组成的整数,看他能否被十以内的奇数整除

1 1 1肯定是答案

一个数能被 3 3 3整除,那么它的数位之和为一定可以被 3 3 3整除,简单证明一下,设一个 k k k位数,每个位数为 x i x_i xi
n = x k ∗ 1 0 k + x k − 1 ∗ 1 0 k − 1 + . . . x 2 ∗ 10 + x 1 ( x k + x k − 1 + . . x 2 + x 1 ) m o d    3 = 0 n m o d    3 = ∑ i = 1 k ( ( x i m o d    3 ) ∗ ( 1 0 i m o d    3 ) ) = ∑ i = 1 k ( x i m o d    3 ) = 0 n=x_k*10^k+x_{k-1}*10^{k-1}+...x2*10+x_1\\ (x_k+x_{k-1}+..x_2+x_1)\mod 3=0\\ n\mod3=\sum_{i=1}^{k}((x_i\mod 3)*(10^i\mod 3))=\sum_{i=1}^{k}(x_i\mod 3)=0 n=xk10k+xk110k1+...x210+x1(xk+xk1+..x2+x1)mod3=0nmod3=i=1k((ximod3)(10imod3))=i=1k(ximod3)=0
同理可以得出,一个数能被 9 9 9整除,那么它的数位之和一定能被 9 9 9整除

一个数能被 5 5 5整除,它的末尾一定是 0 0 0 5 5 5

最后是 7 7 7有点麻烦,得找找规律,发现题中 n = 111..111 ∗ d n=111..111*d n=111..111d,由 1 1 1构成的 n n n中最小的能被 7 7 7整除的为 111111 111111 111111

所以只要 n ! m o d    6 = = 0 n!\mod6==0 n!mod6==0 n > = 3 n>=3 n>=3 n n n一定可以表示为 111111 ∗ a + 111111 ∗ b + . . . 111111*a+111111*b+... 111111a+111111b+...

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
map<int,int>mp;
int n;int a[N];
int l[N],r[N];
long long gcd(long long a,long long b)
{
	return b? gcd(b,a%b):a;
}
void solve()
{
	int n,d;cin>>n>>d;
	cout<<"1 ";
	if(n>=3||d%3==0)cout<<"3 ";
	if(d==5)cout<<"5 ";
	if(n>=3||d==7)cout<<"7 ";
	if(n>=6||(n>=3&&d%3==0)||d==9)cout<<"9 ";
	cout<<endl;
}
int main()
{
	int t;cin>>t;
	while(t--)solve();
}

Problem - C - Codeforces

dp 数学

给出一个整数数组,数组最多有一个数 x x x不是 − 1 , 1 -1,1 1,1

问数组的一个连续段的和最多有几种不同结果,考虑空段

观察题目显然想到要把数组分为 x x x左边和 x x x右边,独立来看

对于一个只有 − 1 , 1 -1,1 1,1的序列,假设它的连续段和最大为 x x x,最小为 y y y,可以证明它的连续段和肯定可以取满 [ y , x ] [y,x] [y,x]内的值

证明:对于最大值 x x x,由于它是由一个连续段相加得来,那么肯定可以将这个连续段分为若干个和为 1 1 1的更小的段,从两端开始移去子段,得到的连续段和为 x − 1 , x − 2...0 x-1,x-2...0 x1,x2...0,所以肯定可以取满 [ 0 , x ] [0,x] [0,x],同理可得取满 [ y , 0 ] [y,0] [y,0]

对于求最大最小值就是简单的 d p dp dp问题了

设已经求出的左边范围是 [ a , b ] [a,b] [a,b],右边为 [ c , d ] [c,d] [c,d],(由于肯定包含 0 0 0,两者肯定有交集)将其合并为 [ x , y ] [x,y] [x,y],那么答案至少是 y − x + 1 y-x+1 yx+1

再考虑 x x x,设它的坐标是 i n d ind ind,只用求出 [ i n d + 1 , n ] [ind+1,n] [ind+1,n]的前缀和与 [ 1 , i n d − 1 ] [1,ind-1] [1,ind1]的后缀和,将他们的范围(最大值大于等于 0 0 0,最小值小于等于 0 0 0)相加得到 [ x 1 , y 1 ] [x_1,y_1] [x1,y1]

遍历这个区间加上 x x x看看有没有新的值加入即可

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
map<int,int>mp;
int n;int a[N];
int l[N],r[N];
void solve()
{
	mp.clear();int ind=-1;int ans=0;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		l[i]=r[i]=0;
		scanf("%d",&a[i]);
		if(a[i]<-1||a[i]>1||a[i]==0)ind=i;
	}
	int aa=0,b=0,c=0,d=0;
	if(ind==-1)ind=n+1;
	for(int i=1;i<ind;i++)
	{
		l[i]=max(a[i],l[i-1]+a[i]);
		r[i]=min(a[i],r[i-1]+a[i]);
		aa=max(aa,l[i]);
		b=min(b,r[i]);
	}
	for(int i=ind+1;i<=n;i++)
	{
		l[i]=max(a[i],l[i-1]+a[i]);
		r[i]=min(a[i],r[i-1]+a[i]);
		c=max(c,l[i]);
		d=min(d,r[i]);
	}
	b=min(b,d);aa=max(aa,c);ans=aa-b+1;
	for(int i=b;i<=aa;i++)mp[i]++;
	if(ind!=n+1)
	{
		if(!mp[a[ind]])
		{
			mp[a[ind]]++;
			ans++;
		}
		int sum=0;
		int x1=0,x2=0,y1=0,y2=0;
		for(int i=ind+1;i<=n;i++)
		{
			sum+=a[i];x1=min(x1,sum);x2=max(x2,sum);
		}
		sum=0;
		for(int i=ind-1;i;i--)
		{
			sum+=a[i];y1=min(y1,sum);y2=max(y2,sum);
		}
		int ll=x1+y1,rr=x2+y2;
		for(int i=ll;i<=rr;i++)
		{
			if(!mp[a[ind]+i])
			{
				mp[a[ind]+i]++;ans++;
			}
		}
	}
	cout<<ans<<endl;
	for(auto x:mp)
	{
		cout<<x.first<<' ';
	}
	cout<<endl;
}
int main()
{
	int t;cin>>t;
	while(t--)solve();
}

Problem - D - Codeforces

质数 数学

给出 l , r , g l,r,g l,r,g,求 l ≤ a ≤ b ≤ r , g c d ( a , b ) = g l\leq a\leq b \leq r ,gcd(a,b)=g labr,gcd(a,b)=g的,满足 ∣ a − b ∣ |a-b| ab最大的 a , b a,b a,b

模板题,需要一个转化,对于 x = g ∗ a   , y = g ∗ b x=g*a\ , y=g*b x=ga ,y=gb,如果 g c d ( x , y ) = g gcd(x,y)=g gcd(x,y)=g,那么一定有 g c d ( a , b ) = 1 gcd(a,b)=1 gcd(a,b)=1

那么题目就转化为了找到 [ ( l + g − 1 ) / g , r / g ] [(l+g-1)/g,r/g] [(l+g1)/g,r/g]之间的最大互质对

要根据质数的性质,在题目给的 1 0 18 10^{18} 1018的范围下,相邻质数的距离最大不会超过 1500 1500 1500

其实,设 g n g_n gn为在小于等于 n n n的范围内相邻质数的最大距离, g 1 0 18 = 1442 g_{10^{18}}=1442 g1018=1442

考虑 l l l的下一个质数为 q q q,考虑 r r r的上一个质数为 p p p,两个不相等的质数一定互质,所以答案最坏也要是 ( q , p ) (q,p) (q,p)

在最差的情况下要遍历 g n 2 ∗ l g ( r ) g_n^2*lg(r) gn2lg(r),时间是足够的

从大到小枚举长度即可,看似时间复杂度是 n 2 n^2 n2,,其实很快就可以在两端找到答案

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
map<int,int>mp;
int n;int a[N];
int l[N],r[N];
long long gcd(long long a,long long b)
{
	return b? gcd(b,a%b):a;
}
void solve()
{
	long long x,y,g;cin>>x>>y>>g;
	long long l=(x+g-1)/g,r=y/g;
	for(long long len=r-l;len>=0;len--)
	{
		for(long long i=l;i+len<=r;i++)
		{
			if(gcd(i,i+len)==1)
			{
				cout<<g*i<<' '<<g*(i+len)<<endl;return ;
			}
		}
	}
	cout<<"-1 -1"<<endl;
}
int main()
{
	int t;cin>>t;
	while(t--)solve();
}

可以得到求 [ l , r ] [l,r] [l,r]内的最大互质对的模板

void getprime(long long a, long long b)
{
    for(long long len=r-l;len>=0;len--)
	{
		for(long long i=l;i+len<=r;i++)
		{
			if(gcd(i,i+len)==1)
			{
				cout<<i<<' '<<i+len<<endl;return ;
			}
		}
	}
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WordPress网站中如何修复504错误

504网关超时错误是非常常见的一种网站错误。这种错误发生在上游服务器未能在规定时间内完成请求的情况下&#xff0c;对访问者而言&#xff0c;出现504错误无疑会对访问体验大打折扣&#xff0c;从而对网站的转化率和收入造成负面影响。 504错误通常源于服务器端或网站本身的问…

C++——运算符重载

一、运算符重载 ①含义 函数重载或函数多态&#xff1a;同名函数完成相同的基本操作 C将重载的概念扩展到运算符上&#xff0c;于是出现了运算符重载 C中有很多运算符已经被重载 *运算符&#xff0c;运用于地址&#xff0c;可以得到存储在这个地址的值&#xff1b;运用于两个…

抖去推碰一碰系统技术源码/open SDK转发技术开发

抖去推碰一碰系统技术源码/open SDK转发技术开发 碰一碰智能系统#碰碰卡系统#碰一碰系统#碰一碰系统技术源头开发 碰碰卡智能营销系统开发是一种集成了人工智能和NFC技术的工具&#xff0c;碰碰卡智能营销系统通过整合数据分析、客户关系管理、自动化营销活动、多渠道整合和个…

【Unity3D】ECS入门学习(六)状态组件 ISystemStateComponentData

当需要获知组件是否被销毁时&#xff0c;ECS是没有回调告知的&#xff0c;因此可以将组件继承于ISystemStateComponentData接口&#xff0c;这样即使组件的实体被销毁了&#xff0c;该组件本身是不会消失的&#xff0c;所以可以通过在组件实体销毁后&#xff0c;去设置状态组件…

期权懂|如何计算期权卖方平仓后的盈利?

锦鲤三三每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 如何计算期权卖方平仓后的盈利&#xff1f; 期权卖方平仓后的盈利计算涉及多个因素&#xff0c;包括期权的交易价格、平仓价格以及权利金的变动等。 交易价格&#xff1a;期权卖…

ARM64 Windows 10 IoT工控主板运行x86程序效率测试

ARM上的 Windows 10 IoT 企业版支持仿真 x86 应用程序&#xff0c;而 ARM上的 Windows 11 IoT 企业版则支持仿真 x86 和 x64 应用程序。英创推出的名片尺寸ARM64工控主板ESM8400&#xff0c;可预装正版Windows 10 IoT企业版操作系统&#xff0c;x86程序可无需修改而直接在ESM84…

【Ubuntu 20.4安装截图软件 flameshot 】

步骤一&#xff1a; 安装命令&#xff1a; sudo apt-get install flameshot 步骤二&#xff1a; 设置快捷方式&#xff1a; Ubuntu20.4 设置菜单&#xff0c;点击 号 步骤三&#xff1a; 输入软件名称&#xff0c; 软件快捷命令&#xff08;flameshot gui&#xff09;&am…

NAT 技术如何解决 IP 地址短缺问题?

NAT 技术如何解决 IP 地址短缺问题&#xff1f; 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 随着互联网的普及和发展&#xff0c;IP 地址的需求量迅速增加。尤其是 IPv4 地址&…

算法题(17):删除有序数组中的重复项

审题&#xff1a; 需要我们原地删除数组中的重复数据&#xff0c;并输出有效数据个数 思路&#xff1a; 方法一&#xff1a;原地解法&#xff08;双指针&#xff09; 设置left指针指向当前的非重复数据&#xff0c;right负责遍历数组&#xff0c;遇到和left指向的数据不同的数据…

LaTeXChecker:使用 Python 实现以主 TEX 文件作为输入的 LaTeX 检查和统计工具

使用 Python 实现以主 TEX 文件作为输入的 LaTeX 检查和统计工具&#xff0c;适用于包括但不限于一稿多模板的复杂排版方式&#xff0c;工具以只读模式运行。 Github 链接&#xff1a;https://github.com/BatchClayderman/LaTeXChecker import os from sys import argv, exec…

Web API和Web Services的区分

前些年一提及自动化测试&#xff0c;大多是指UI界面层的自动化测试。近几年&#xff0c;随着分层自动化测试概念的兴起&#xff0c;以及自动化测试自身的发展与细分&#xff0c;自动化测试包含了更多的内容。 API(Application ProgrammingInterface&#xff0c;应用程序编程接…

基于深度学习(HyperLPR3框架)的中文车牌识别系统-前言

参考链接&#xff1a; GitHub - szad670401/HyperLPR: 基于深度学习高性能中文车牌识别 High Performance Chinese License Plate Recognition Framework.基于深度学习高性能中文车牌识别 High Performance Chinese License Plate Recognition Framework. - szad670401/HyperL…

RAGFlow 基于深度文档理解构建的开源 RAG引擎 - 安装部署

RAGFlow 基于深度文档理解构建的开源 RAG引擎 - 安装部署 flyfish 1. 确保 vm.max_map_count ≥ 262144 这是指要调整Linux内核参数vm.max_map_count&#xff0c;以确保其值至少为262144。这个参数控制着进程可以映射的最大内存区域数量。对于某些应用程序&#xff08;如Ela…

QT:一个TCP客户端自动连接的测试模型

版本 1:没有取消按钮 测试效果&#xff1a; 缺陷&#xff1a; 无法手动停止 测试代码 CMakeLists.txt cmake_minimum_required(VERSION 3.19) project(AutoConnect LANGUAGES CXX)find_package(Qt6 6.5 REQUIRED COMPONENTS Core Widgets Network)qt_standard_project_setup(…

(亲测)frp对外提供简单的文件访问服务-frp静态文件效果

话说有一天&#xff0c;希望将软件安装包放到网上&#xff0c;希望类似如下效果&#xff0c;正好在调试frp docker版&#xff0c;看到frp有个【对外提供简单的文件访问服务】功能&#xff0c;网上搜索也没相关效果图&#xff0c;所以顺手测试一下&#xff0c;截了几张图&#x…

一个简单的机器学习实战例程,使用Scikit-Learn库来完成一个常见的分类任务——**鸢尾花数据集(Iris Dataset)**的分类

机器学习实战通常是将理论与实践结合&#xff0c;通过实际的项目或案例&#xff0c;帮助你理解并应用各种机器学习算法。下面是一个简单的机器学习实战例程&#xff0c;使用Scikit-Learn库来完成一个常见的分类任务——**鸢尾花数据集&#xff08;Iris Dataset&#xff09;**的…

如何解决 ‘adb‘ 不是内部或外部命令,也不是可运行的程序或批处理文件的问题

在cmd中输入 adb &#xff0c;显示 ‘adc‘ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件的问题 解决办法&#xff1a;在环境变量中添加adb所在的路径 1、找到 adb.exe 的所在的文件路径&#xff0c;一般在 Android 安装目录下 \sdk\platform-tools\adb.exe…

【开源】一款基于SpringBoot的智慧小区物业管理系统

一、下载项目文件 项目文件源码链接&#xff1a;https://pan.quark.cn/s/3998d958e182如出现网盘空间不够存的情况&#xff01;&#xff01;&#xff01;解决办法是先用夸克手机app注册&#xff0c;然后保存上方链接&#xff0c;就可以得到1TB空间了&#xff01;&#xff01;&…

Linux编程(清华大学出版社2019年1月第1版)第7章-进程间通信-课后作业

7.1 输出: 4:ABCD 4:EFGH7.2 输出: numbers3 10 20 30 7.3 #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <limits.h> #include <fcntl.h> #include <sys/types.h> #include <stdint.h> #includ…

线性代数行列式

目录 二阶与三阶行列式 二元线性方程组与二阶行列式 三阶行列式 全排列和对换 排列及其逆序数 对换 n阶行列式的定义 行列式的性质 二阶与三阶行列式 二元线性方程组与二阶行列式 若是采用消元法解x1、x2的话则得到以下式子 有二阶行列式的规律可得&#xff1a;分…