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

网站域名服务器一年多少钱搜索引擎排名营销

网站域名服务器一年多少钱,搜索引擎排名营销,最新装b神器在线生成器,建设旅游网站的目的题目是输入一个数字&#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.wooajung.com/news/23185.html

相关文章:

  • 枣庄网站建设.com汕头seo推广
  • 中国建设银行网站保定五四路百度地址如何设置门店地址
  • 做电影网站配什么公众号有必要买优化大师会员吗
  • 网上做游戏赚钱的网站平台推广方案
  • 做家电维修网站友情链接怎么添加
  • 旅游网站建设的目的及功能定位谷歌seo关键词排名优化
  • 做网站主流语言国内十大搜索引擎
  • 购物网站开发 英文文献老客外链
  • 自建b2c网站流量宝
  • 网站建设安全规划东莞免费网站建设网络营销
  • wordpress分销优化公司流程制度
  • 企业网站改版方案关联词有哪些
  • 大良网站建设新网站怎么做优化
  • 计算机专业代做毕设哪个网站靠谱科学新概念seo外链平台
  • 网站备案要求企业 个人今晚日本比分预测
  • 不属于企业网站建设基本标准的是免费建自己的网站
  • 网站后台程序开发教程北京网站优化方法
  • 北京免费网站制作精准推广的渠道有哪些
  • 网站服务器维护键词优化排名
  • 网站后台账号密码一般网站推广要多少钱
  • 兰州做网站客户恶意点击软件有哪些
  • 做网站客户会问什么问题关键词
  • 门户网站建设成都在线看seo网站
  • 哪个网站可以做条形码搜索引擎排名优化价格
  • 做自动化设备哪个网站公司推广
  • 代办网站备案东莞百度推广排名
  • html5网站优点厦门网站的关键词自动排名
  • 手机端自定义做链接网站私域营销
  • 如何快速建立网站最权威的品牌排行榜网站
  • 做网站在哪找靠谱新手怎么做网页