注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

东月之神

在单纯的观念里面,生命就容易变得比较深刻!

 
 
 

日志

 
 
关于我

别驻足,梦想要不停追逐,别认输,熬过黑暗才有日出,要记住,成功就在下一步,路很苦,汗水是最美的书!

网易考拉推荐

xmu1218.分玩具  

2011-11-26 17:28:30|  分类: ACM |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Time Limit: 1000 MS         Memory Limit: 65536 K
Total Submissions: 143 (57 users)         Accepted: 74 (52 users)
[ My Solution ]

Description

    幼儿园里经常会买很多玩具来分给小朋友们玩,但每次分玩具时,都会有很多小朋友因为得不到喜爱的玩具而不高兴。因此,有人给幼儿园的老师提出了一种分配方法。
    例如,有11个小朋友来分玩具,首先分给1号;跳过0个小朋友,分给2号;然后跳过1个小朋友(即3号),分给了4号;再跳过2个小朋友(5、6号),分给7号;再跳过3个小朋友(8、9、10号),分给11号;再跳过4个小朋友(1、2、3、4),分给5号;…,如此循环下去。
    由于幼儿园经常会买很多玩具,因此这里的玩具可以看作有无限多个。虽然这个方法看上去不错,但是幼儿园老师还是担心会不会有小朋友总分不到玩具呢?

Input

第一行输入一个正整数T(1<=T<=10000),表示测试数据的组数.
接下来T行,每行输入一个正整数n(1<=n<=2^31 - 1),表示小朋友的个数。

Output

对于每组测试数据,单独输出一行,如果每个小朋友至少可以分到一个玩具,则输出”Yes”;否则输出”No”.

Sample Input

1
11

Sample Output

No

Source
 
       看到这题就是有规律的。想了下,应该是1,2,4,8,16,32。。。。。。结果WA了,重新定义了下unsigned int就过了,害我以为找错规律了。还是思维不够缜密啊!!
  1. #include <stdio.h>                 
  2. int main()            
  3. {   
  4.     int n, t;   
  5.     scanf("%d", &t);   
  6.     while(t--)   
  7.     {   
  8.         scanf("%d", &n);   
  9.         unsigned int sum = 1;   
  10.         int  flag = 1;   
  11.         for(int i = 1; i <= 31 && flag; i++)   
  12.         {   
  13.             if(sum == n) flag = 0;   
  14.             sum *= 2;   
  15.         }   
  16.         if(!flag)   printf("Yes\n");   
  17.         else    printf("No\n");   
  18.     }      
  19. return 0;                  
  20. }  

 

打表居然没有快多少,唉。。。。。

  1. #include <stdio.h>                 
  2. int main()            
  • {   
  •     unsigned int n, t;   
  •     unsigned int a[]= {1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,   
  •                         16384,32768,65536,131072,262144,   
  •                         524288,1048576,2097152,4194304,8388608,16777216,   
  •                         33554432,67108864,134217728,268435456,536870912,   
  •                         1073741824,2147483648};   
  •     scanf("%d", &t);   
  •     while(t--)   
  •     {   
  •         scanf("%d", &n);   
  •         int flag = 1;   
  •         for(int i = 0; i <= 32 && flag; i++)   
  •             if(n == a[i])   
  •                 flag = 0;   
  •         if(!flag)   printf("Yes\n");   
  •         else    printf("No\n");   
  •     }      
  • return 0;                  
  • }  
  •   评论这张
     
    阅读(215)| 评论(0)
    推荐 转载

    历史上的今天

    评论

    <#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
     
     
     
     
     
     
     
     
     
     
     
     
     
     

    页脚

    网易公司版权所有 ©1997-2017