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

网站建设的客户都在哪里微信指数查询

网站建设的客户都在哪里,微信指数查询,网络培训课堂app,网站交易题目是输入一个数字&#xff0c;分解成三个数字的和&#xff0c;这三个数字都不相同&#xff0c;并且都不可以被三整除&#xff0c;如果存在输出YES并且输出任意一组可能的三个数字&#xff0c;否则输出NO 代码 #include<bits/stdc.h> using namespace std;int main() …

题目是输入一个数字,分解成三个数字的和,这三个数字都不相同,并且都不可以被三整除,如果存在输出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;
}

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

 

 

 

http://www.yayakq.cn/news/790890/

相关文章:

  • 做问卷调查的网站做摄影网站的目的是什么意思
  • 湛江哪家公司建网站最好四川住房和城乡建设厅进不去网站
  • 网站制作方案大全电商网站开发模块
  • 淄博手机网站建设报价家装设计软件app免费
  • 哈巴狗模式网站开发如何在外管局网站上做a合同
  • 有什么教做维c甜品的网站长沙营销型网站
  • 信阳做网站 汉狮网络免费查询公司信息
  • h5手机网站开发demo青岛seo公司
  • 学校网站建设策划自媒体平台注册下载
  • 网站开发得多长时间wordpress tag 输出
  • 大庆金思维科技网站开发wordpress悬浮音乐播放器
  • 深圳网站制作公司地址东莞推广系统价格
  • win2008做的网站打不开广告发布平台app
  • 广告网站建设网漯河市建设局网站
  • 网站建设构建方案网站编辑转行做文案
  • 苏中建设网站有限公司网站建设 中企动力重庆
  • 做暧动漫视频在线观看网站郑州电商公司排名前十有哪些
  • 揭阳网站开发淘宝做个网站多少钱
  • 网站导航功能网站开发设计流程论文
  • 企业局域网站建设wordpress代码显示头像
  • 网站手机端的优势网络推广策划书范文
  • 自己做民宿在什么网站上投放企业网站建设 新闻宣传
  • 网站开发技术课程报告软件培训学校哪家好
  • 如何在亚马逊做公司网站长沙的互联网网站公司哪家好
  • 网站核验单怎么下载seo关键词优化的技巧和方法
  • 广安网站建设兼职扬州推广公司
  • 容易被收录的网站网站姐姐做床戏网站
  • 进入 网站cms遵义网站建设遵义
  • 秦皇岛汽车网站制作维港豪宅项目网站建设
  • 如何增加网站的权重传媒网站设计