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库,把某个…...
Linux依赖冲突实战:deepin-wine疑难杂症排查指南
1. 当deepin-wine遇上依赖地狱:报错现场还原 第一次在Ubuntu上安装deepin-wine时,那个满屏飘红的依赖错误让我至今记忆犹新。终端里不断刷新的"但是它将不会被安装"提示,像极了游戏里的连环陷阱。这类问题通常发生在混合安装32位/6…...
use Yii;的本质的庖丁解牛
use Yii; 这行代码,常被误解为“引入了一个类”或者“为了少打几个字”。 但本质上,它是 Yii 框架(尤其是 Yii2)架构哲学的“图腾”。 它标志着 Yii 选择了一条与 Laravel、Symfony 截然不同的道路:将核心功能暴露为一…...
游戏化学习与编程实战:CodeCombat让编程学习像玩游戏一样简单
游戏化学习与编程实战:CodeCombat让编程学习像玩游戏一样简单 【免费下载链接】codecombat Game for learning how to code. 项目地址: https://gitcode.com/gh_mirrors/co/codecombat 你是否也曾因枯燥的编程教程而中途放弃?是否希望找到一种既能…...
OpenGL天空盒实战:从零搭建到环境反射效果(附完整代码)
OpenGL天空盒实战:从零搭建到环境反射效果(附完整代码) 在3D图形开发中,天空盒技术是实现环境氛围营造的基础手段。想象一下,当你站在游戏场景中抬头望去,远处的山脉、流动的云层和深邃的星空共同构成了沉浸…...
iOS IPA直装终极指南:3分钟学会免电脑安装第三方应用
iOS IPA直装终极指南:3分钟学会免电脑安装第三方应用 【免费下载链接】App-Installer On-device IPA installer 项目地址: https://gitcode.com/gh_mirrors/ap/App-Installer 你是否曾为安装第三方iOS应用而烦恼?传统的IPA安装方法不仅需要连接电…...
零基础前端入门:借助快马AI生成你的第一个可交互魔鬼面具网页
最近想学前端开发,但面对一堆陌生的术语和复杂的配置,总感觉无从下手。直到发现了InsCode(快马)平台,用自然语言描述就能生成可运行的代码,简直是新手福音!这次尝试做了一个可交互的魔鬼面具网页,整个过程特…...
Cubli_Mini自平衡机器人搭建指南:从原理到实践的完整路径
Cubli_Mini自平衡机器人搭建指南:从原理到实践的完整路径 【免费下载链接】Cubli_Mini 项目地址: https://gitcode.com/gh_mirrors/cu/Cubli_Mini 项目简介:探索自平衡技术的开源平台 Cubli_Mini是一款基于ESP32微控制器的自平衡立方体机器人&a…...
CTF比赛必备:3步掌握无SQL版XSS数据接收平台实战技巧
CTF比赛必备:3步掌握无SQL版XSS数据接收平台实战技巧 【免费下载链接】BlueLotus_XSSReceiver 项目地址: https://gitcode.com/gh_mirrors/bl/BlueLotus_XSSReceiver 在网络安全测试和CTF比赛中,XSS漏洞的利用和数据捕获是每个参赛者必须掌握的核…...
BiliDownloader:B站视频高效下载与管理的全能解决方案
BiliDownloader:B站视频高效下载与管理的全能解决方案 【免费下载链接】BiliDownloader BiliDownloader是一款界面精简,操作简单且高速下载的b站下载器 项目地址: https://gitcode.com/gh_mirrors/bi/BiliDownloader 功能特性:探索B站…...
COMSOL 不同激光入射角打孔形貌设置方法 模型内容:不同激光入射角度的设置 优势:视频教学...
COMSOL 不同激光入射角打孔形貌设置方法 模型内容:不同激光入射角度的设置 优势:视频教学和模型注释清晰明了,各个情况都有涉及可参考性极强,可以修改,收敛性已调至最优,本案例可进行拓展应用服务ÿ…...
