当前位置: 首页 > news >正文

cf 1886A

题目是输入一个数字,分解成三个数字的和,这三个数字都不相同,并且都不可以被三整除,如果存在输出YES并且输出任意一组可能的三个数字,否则输出NO

代码

#include<bits/stdc++.h>
using namespace std;int main()
{int t;scanf("%d",&t);while(t--){int x,y,z;int n;bool flag=false;scanf("%d",&n);for(x=1;x<=10;x++){for(y=x+1;y<=10;y++){z=n-x-y;if(x%3!=0&&y%3!=0&&z%3!=0&&z>y){printf("YES\n%d %d %d\n",x,y,z);flag=true;break;}}if(flag==true)	break;}if(!flag)	printf("NO\n");}return 0;
}

循环,让第二个数字y等于x+1就可以保证最开始两个数字就不相等,还是这种方法最明了,直接条件判断 

赛时代码

#include<bits/stdc++.h>
using namespace std;int ans[5];int main()
{int t;scanf("%d",&t);while(t--){int n;bool flag=false;scanf("%d",&n);int temp=n/3;if(n%3==0){if(temp%3!=0){ans[0]=temp-1,ans[1]=temp,ans[2]=temp+1;while((ans[0]%3==0||ans[2]%3==0)&&ans[0]>0){ans[0]-=1;ans[2]+=1;}}else{ans[0]=temp,ans[1]=temp-1,ans[2]=temp+1;while((ans[0]%3==0||ans[2]%3==0||ans[0]==ans[1])&&ans[0]>0){ans[0]-=1;ans[2]+=1;}}if(ans[0]+ans[1]+ans[2]==n&&ans[0]%3!=0&&ans[2]%3!=0&&ans[1]%3!=0&&ans[0]!=ans[1]&&ans[0]!=ans[2]&&ans[1]!=ans[2])	flag=true;}else{int q=n%3;ans[0]=temp,ans[1]=temp,ans[2]=temp+q;if(temp%3!=0){ans[0]=temp,ans[1]=temp,ans[2]=temp+q;while((ans[0]%3==0||ans[2]%3==0||ans[0]==ans[1])&&ans[0]>0){ans[0]-=1;ans[2]+=1;}}else{ans[0]=temp-1,ans[1]=temp+1,ans[2]=temp+q;while((ans[0]%3==0||ans[2]%3==0||ans[0]==ans[1]||ans[1]==ans[2])&&ans[0]>0){ans[0]-=1;ans[2]+=1;}}if(ans[0]+ans[1]+ans[2]==n&&ans[0]%3!=0&&ans[2]%3!=0&&ans[1]%3!=0&&ans[0]!=ans[1]&&ans[0]!=ans[2]&&ans[1]!=ans[2])	flag=true;}if(n<=3)	flag=false;if(flag==true)	{printf("YES\n");printf("%d %d %d\n",ans[0],ans[1],ans[2]);}else	printf("NO\n");}return 0;
}

标签是暴力破解,构造算法,数学

仔细想了一下,确实暴力就可以直接过

我比赛的时候想的方法确实比较繁琐哈哈

讨论输入的数字n是否能够被3整除,把数字n除以3,然后把这三个数字放在ans[0],ans[1],ans[2]里面,保证中间的位置满足不被3整除,然后调整ans[0],ans[2]这两个数字,ans[0]--,ans[2]++,一个因子减少一,另一个因子增加一,和n保持不变,所以可以满足条件,也可以寻找到答案

 另外一种解法

#include<bits/stdc++.h>
using namespace std;int main()
{int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);if(n%3==0){int z=n-5;if(z%3!=0&&z>4)	printf("YES\n1 4 %d\n",z);else	printf("NO\n");}else{int ans=n-3;if(ans%3!=0&&ans>2)	printf("YES\n1 2 %d\n",ans);else	printf("NO\n");}}return 0;
}

上面这种做法是找规律,我们只需要输出一种符合条件的情况即可,所以我们考虑一些特殊的数字,比如说1和2,这两个数字不相同并且两个数字的和是3,如果数字n是可以被3整除的,并且大于3的话(如果是3的话,剩下的那个数字只可以是0,不符合条件),剩下的那个数字就一定可以被3整除,但是如果n不可以被3整除,剩下的那个数也不可以被3整除(如果可以被3整除的话,n就可以被3整除了)

有点绕

分两种特殊情况来考虑,第一种特殊情况,取x=1,y=2,这个时候假设n是不能被3整除的数字,剩下的那个数字我们记为z,z一定是不能被3整除的,因为假设z可以被3整除,加上3还是可以被3整除(加上3就等于n了),和假设矛盾,所以z一定不能被3整除(反证法),注意需要满足z大于2这个条件

第二种情况就是取x=1,y=4,考虑n可以被3整除,剩下的数字z一定是不可以被3整除的,证明如下,还是反证法,就是假设z是可以被3整除的,假设z=3b,n=3k,那么有5+3b=3k,移向可以得到5/3=k-b,两个整数的差不可能是小数,所以矛盾,所以z一定是不可以被3整除的

#include<bits/stdc++.h>
using namespace std;int main()
{int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);if(n%3==0){int z=n-5;if(z>4)	printf("YES\n1 4 %d\n",z);else	printf("NO\n");}else{int ans=n-3;if(ans>2)	printf("YES\n1 2 %d\n",ans);else	printf("NO\n");}}return 0;
}

经过一通分析之后发现这样子其实更加简洁,但是前期需要分析的更多一些

 

 

 

相关文章:

cf 1886A

题目是输入一个数字&#xff0c;分解成三个数字的和&#xff0c;这三个数字都不相同&#xff0c;并且都不可以被三整除&#xff0c;如果存在输出YES并且输出任意一组可能的三个数字&#xff0c;否则输出NO 代码 #include<bits/stdc.h> using namespace std;int main() …...

Spring5应用之事务属性

作者简介&#xff1a;☕️大家好&#xff0c;我是Aomsir&#xff0c;一个爱折腾的开发者&#xff01; 个人主页&#xff1a;Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏&#xff1a;Spring5应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言事务…...

C# 搭建一个简单的WebApi项目23.10.10

一、创建Web API 1、创建一个新的web API项目 启动VS 2019&#xff0c;并在“开始页”选择“创建新项目”。或从“文件”菜单选择“新建”&#xff0c;然后选择“项目”。 选择ASP.NET Web应用程序(.NET Framework) 2.点击下一步&#xff0c;到这个页面时选择Web API。 3.选中…...

VGG卷积神经网络实现Cifar10图片分类-Pytorch实战

前言 当涉足深度学习&#xff0c;选择合适的框架是至关重要的一步。PyTorch作为三大主流框架之一&#xff0c;以其简单易用的特点&#xff0c;成为初学者们的首选。相比其他框架&#xff0c;PyTorch更像是一门易学的编程语言&#xff0c;让我们专注于实现项目的功能&#xff0…...

CentOS 7文件系统中的软链接和硬链接

软链接&#xff08;Symbolic Link&#xff09; 软链接&#xff0c;也称为符号链接&#xff0c;是一个指向另一个文件或目录的特殊类型的文件。它是一个指向目标文件的符号&#xff0c;就像快捷方式一样。软链接的创建和使用非常灵活&#xff0c;适用于各种情况。 创建软链接 …...

【AI】深度学习——前馈神经网络——全连接前馈神经网络

文章目录 1.1 全连接前馈神经网络1.1.1 符号说明超参数参数活性值 1.1.2 信息传播公式通用近似定理 1.1.3 神经网络与机器学习结合二分类问题多分类问题 1.1.4 参数学习矩阵求导链式法则更为高效的参数学习反向传播算法目标计算 ∂ z ( l ) ∂ w i j ( l ) \frac{\partial z^{…...

超简单的视频截取方法,迅速提取所需片段!

“视频可以截取吗&#xff1f;用相机拍摄了一段视频&#xff0c;但是中途相机发生了故障&#xff0c;录进去了很多不需要的片段&#xff0c;现在想截取一部分视频出来&#xff0c;但是不知道方法&#xff0c;想问问广大的网友&#xff0c;知不知道视频截取的方法。” 无论是工…...

ArcGIS/GeoScene脚本:基于粒子群优化的支持向量机回归模型

参数输入 1.样本数据必须包含需要回归的字段 2.回归字段是数值类型 3.影响因子是栅格数据&#xff0c;可添加多个 4.随机种子可以确保每次运行的训练集和测试集一致 5.训练集占比为0-1之间的小数 6.迭代次数&#xff1a;迭代次数越高精度越高&#xff0c;但是运行时间越长…...

vue3组件的通信方式

一、vue3组件通信方式 通信仓库地址:vue3_communication: 当前仓库为贾成豪老师使用组件通信案例 不管是vue2还是vue3,组件通信方式很重要,不管是项目还是面试都是经常用到的知识点。 比如:vue2组件通信方式 props:可以实现父子组件、子父组件、甚至兄弟组件通信 自定义事件:可…...

Qt QPair

QPair 文章目录 QPair 摘要QPairQPair 特点代码示例QPair 与 QMap 区别 关键字&#xff1a; Qt、 QPair、 QMap、 键值、 容器 摘要 今天在观摩小伙伴撸代码的时候&#xff0c;突然听到了QPair自己使用Qt开发这么就&#xff0c;竟然都不知道&#xff0c;所以趁没有被人发…...

K8S云计算系列-(3)

K8S Kubeadm案例实战 Kubeadm 是一个K8S部署工具&#xff0c;它提供了kubeadm init 以及 kubeadm join 这两个命令来快速创建kubernetes集群。 Kubeadm 通过执行必要的操作来启动和运行一个最小可用的集群。它故意被设计为只关心启动集群&#xff0c;而不是之前的节点准备工作…...

ardupilot罗盘数据计算航向

目录 文章目录 目录摘要1.数据特点2.数据结论1.结论2.结论摘要 本节主要记录ardupilot 根据罗盘数据计算航向的过程。 如果知道了一组罗盘数据,我们可以粗略估计航向:主要后面我们所说的X和Y都是表示的飞机里面的坐标系,也就是X前Y右边,如果按照罗盘坐标系Y实际在左边。 我…...

第六章:最新版零基础学习 PYTHON 教程—Python 正则表达式(第一节 - Python 正则表达式)

在本教程中,您将了解RegEx并了解各种正则表达式。 常用表达为什么使用正则表达式基本正则表达式更多正则表达式编译的正则表达式 目录​​​​​​​ 元字符 为什么是正则表达式?...

docker安装Jenkins完整教程

1.docker拉取 Jenkins镜像并启动容器 新版本的Jenkins依赖于JDK11 我们选择docker中jdk11版本的镜像 # 拉取镜像 docker pull jenkins/jenkins:2.346.3-2-lts-jdk11 2.宿主机上创建文件夹 # 创建Jenkins目录文件夹 mkdir -p /data/jenkins_home # 设置权限 chmod 777 -R /dat…...

[CISCN 2019初赛]Love Math - RCE(异或绕过)

[CISCN 2019初赛]Love Math 1 解题流程1.1 分析1.2 解题题目代码: <?php //听说你很喜欢数学,不知道你是否爱它胜过爱flag if(!isset($_GET[c]))...

C++ 使用getline()从文件中读取一行字符串

我们知道,getline() 方法定义在 istream 类中,而 fstream 和 ifstream 类继承自 istream 类,因此 fstream 和 ifstream 的类对象可以调用 getline() 成员方法。 当文件流对象调用 getline() 方法时,该方法的功能就变成了从指定文件中读取一行字符串。 该方法有以下 2 种语…...

JS进阶-原型

原型 原型就是一个对象&#xff0c;也称为原型对象 构造函数通过原型分配的函数是所有对象所共享的 JavaScript规定&#xff0c;每一个构造函数都有一个prototype属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象 这个对象可以挂载函数&#xff0c;对象实…...

虹科方案 | 汽车CAN/LIN总线数据采集解决方案

全文导读&#xff1a;现代汽车配备了复杂的电子系统&#xff0c;CAN和LIN总线已成为这些系统之间实现通信的标准协议&#xff0c;为了开发和优化汽车的电子功能&#xff0c;汽车制造商和工程师需要可靠的数据采集解决方案。基于PCAN和PLIN设备&#xff0c;虹科提供了一种高效、…...

HTML5+CSSDAY4综合案例一--热词

样式展示图&#xff1a; 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>热词…...

【源码】hamcrest 源码阅读 泛型 extends 和迭代器模式

文章目录 前言1. 泛型参数和自定义迭代器1.1 使用场景1.2 实现 2. 值得一提 前言 官方文档 Hamcrest Tutorial 上篇文章 Hamcrest 源码阅读及空对象模式、模板方法模式的应用 本篇文章 迭代器模式 1. 泛型参数和自定义迭代器 hamcrest 作为一个matcher库&#xff0c;把某个…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...