送气球

Time Limit: 2000/1000ms (Java/Others)

Problem Description:

为了奖励近段时间辛苦刷题的ACMer,会长决定给正在机房刷题的他们送气球。N位ACMer的围成了一个圈,会长分别间隔1,2,3,4.......个ACMer送一个气球,请问是不是所有的ACMer都有气球呢?

Input:

输入一个数字N(2≤N<1000000000),代表ACMer的人数。

Output:

如果所有人都有,输出‘YES’,否则输出‘NO’。

Sample Input:

2
3
5
10

Sample Output:

YES
NO
NO
NO Hint:
N = 5,首先会长给一号和二号ACMer一个糖果,之后给四号一个糖果,按照循环,再给二号一个糖果,再给一号一个糖果,再给一号一个糖果......
解题思路:咋看这道题给的数据n最大是10的9次方,再结合题意,纯找规律题啊。但是菜鸡比赛时测试代码下标写错了,结果半天跑不出结果,比赛完后修改了一下并A了这水题。
给出的提示意思是,先给1号一个糖果,间隔1到2号再给2号糖果,间隔2到4号给其糖果,就这样子循环给。
测试代码找规律:
 #include<bits/stdc++.h>
using namespace std;
int main()
{
for(int N=;N<;++N){
int j=,t=;
bool a[N],flag=false;
memset(a,false,sizeof(a));
a[]=a[]=true;//下标从0开始
while(t<){
j=(j+t)%N;//j:0~N-1
if(!a[j])a[j]=true;
t++;
}
for(int i=;i<N;++i){
if(!a[i]){flag=true;break;}
}
if(!flag)cout<<N<<endl;
//else cout<<N<<":0"<<endl;
}
return ;
}
由于间隔t给的是10的6次方,所以找N个ACMer是否都分到糖果只枚举到1000个,这样不用等太久。运行结果是 4  8  16  32   64 。。。熟悉吧!!!这就是规律!!!接下来就好办了,题目给的N最大为10的9次方在int范围内,所以先打表2^i次方,再枚举判断N是否在这里面即可。
AC代码:
 #include<bits/stdc++.h>
using namespace std;
int main()
{
int a[]={},n;
bool flag;
for(int i=;i<;i++)
a[i]=*a[i-];
while(cin>>n){
flag=false;
for(int i=;i<;++i){
if(n==a[i]){flag=true;break;}
}
if(flag)cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return ;
}
 

最新文章

  1. SDWebImage源码解读_之SDWebImageDecoder
  2. Sql Server系列:键和约束
  3. Element is not currently interactable and may not be manipulated
  4. 用jQuery基于原生js封装的轮播
  5. bfc+css
  6. [Android]下拉刷新控件RefreshableView的实现
  7. zookeeper节点失效重连机制
  8. 浅入ARP
  9. POJ 3061 Subsequence 尺取法
  10. GHOST系统锁定主页常用软件及解决方案
  11. golang的ssh例子
  12. Blueprint编译过程
  13. js自定义排序
  14. poj 2796 Feel Good 单调栈区间问题
  15. 判断Table表中是否含有某一列
  16. zabbix 主机名必须要能ping通
  17. 我的winows server 2012 突然多了个piress的帐户,后来一查原来是mysql漏洞的问题,郁闷
  18. 3D游戏图形引擎
  19. LeetCode--389--找不同
  20. MutationObserver DOM变化的观察

热门文章

  1. 【APUE】信号
  2. hdoj 3351 Seinfeld 【栈的简单应用】
  3. VM Workstation的Unity Mode有什么用
  4. Nginx在Linux下的安装部署
  5. SGU - 311 Ice-cream Tycoon(线段树)
  6. JS地区四级级联
  7. Android网络编程(三)Volley使用方法全解析
  8. Mysql Solution - Timeout error occurred trying to stop MySQL Daemon. Stopping MySQL: [FAILED] -
  9. debug找到source lookup path以及,debug跑到另外的解决办法
  10. XMU 1614 刘备闯三国之三顾茅庐(二) 【逆向思维+二维并查集】