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
题目是输入一个数字,分解成三个数字的和,这三个数字都不相同,并且都不可以被三整除,如果存在输出YES并且输出任意一组可能的三个数字,否则输出NO 代码 #include<bits/stdc.h> using namespace std;int main() …...
Spring5应用之事务属性
作者简介:☕️大家好,我是Aomsir,一个爱折腾的开发者! 个人主页:Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏:Spring5应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言事务…...
C# 搭建一个简单的WebApi项目23.10.10
一、创建Web API 1、创建一个新的web API项目 启动VS 2019,并在“开始页”选择“创建新项目”。或从“文件”菜单选择“新建”,然后选择“项目”。 选择ASP.NET Web应用程序(.NET Framework) 2.点击下一步,到这个页面时选择Web API。 3.选中…...
VGG卷积神经网络实现Cifar10图片分类-Pytorch实战
前言 当涉足深度学习,选择合适的框架是至关重要的一步。PyTorch作为三大主流框架之一,以其简单易用的特点,成为初学者们的首选。相比其他框架,PyTorch更像是一门易学的编程语言,让我们专注于实现项目的功能࿰…...
CentOS 7文件系统中的软链接和硬链接
软链接(Symbolic Link) 软链接,也称为符号链接,是一个指向另一个文件或目录的特殊类型的文件。它是一个指向目标文件的符号,就像快捷方式一样。软链接的创建和使用非常灵活,适用于各种情况。 创建软链接 …...
【AI】深度学习——前馈神经网络——全连接前馈神经网络
文章目录 1.1 全连接前馈神经网络1.1.1 符号说明超参数参数活性值 1.1.2 信息传播公式通用近似定理 1.1.3 神经网络与机器学习结合二分类问题多分类问题 1.1.4 参数学习矩阵求导链式法则更为高效的参数学习反向传播算法目标计算 ∂ z ( l ) ∂ w i j ( l ) \frac{\partial z^{…...
超简单的视频截取方法,迅速提取所需片段!
“视频可以截取吗?用相机拍摄了一段视频,但是中途相机发生了故障,录进去了很多不需要的片段,现在想截取一部分视频出来,但是不知道方法,想问问广大的网友,知不知道视频截取的方法。” 无论是工…...
ArcGIS/GeoScene脚本:基于粒子群优化的支持向量机回归模型
参数输入 1.样本数据必须包含需要回归的字段 2.回归字段是数值类型 3.影响因子是栅格数据,可添加多个 4.随机种子可以确保每次运行的训练集和测试集一致 5.训练集占比为0-1之间的小数 6.迭代次数:迭代次数越高精度越高,但是运行时间越长…...
vue3组件的通信方式
一、vue3组件通信方式 通信仓库地址:vue3_communication: 当前仓库为贾成豪老师使用组件通信案例 不管是vue2还是vue3,组件通信方式很重要,不管是项目还是面试都是经常用到的知识点。 比如:vue2组件通信方式 props:可以实现父子组件、子父组件、甚至兄弟组件通信 自定义事件:可…...
Qt QPair
QPair 文章目录 QPair 摘要QPairQPair 特点代码示例QPair 与 QMap 区别 关键字: Qt、 QPair、 QMap、 键值、 容器 摘要 今天在观摩小伙伴撸代码的时候,突然听到了QPair自己使用Qt开发这么就,竟然都不知道,所以趁没有被人发…...
K8S云计算系列-(3)
K8S Kubeadm案例实战 Kubeadm 是一个K8S部署工具,它提供了kubeadm init 以及 kubeadm join 这两个命令来快速创建kubernetes集群。 Kubeadm 通过执行必要的操作来启动和运行一个最小可用的集群。它故意被设计为只关心启动集群,而不是之前的节点准备工作…...
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进阶-原型
原型 原型就是一个对象,也称为原型对象 构造函数通过原型分配的函数是所有对象所共享的 JavaScript规定,每一个构造函数都有一个prototype属性,指向另一个对象,所以我们也称为原型对象 这个对象可以挂载函数,对象实…...
虹科方案 | 汽车CAN/LIN总线数据采集解决方案
全文导读:现代汽车配备了复杂的电子系统,CAN和LIN总线已成为这些系统之间实现通信的标准协议,为了开发和优化汽车的电子功能,汽车制造商和工程师需要可靠的数据采集解决方案。基于PCAN和PLIN设备,虹科提供了一种高效、…...
HTML5+CSSDAY4综合案例一--热词
样式展示图: 代码如下: <!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库,把某个…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
