zoukankan      html  css  js  c++  java
  • HDU 1034(传递糖果 模拟)

    题意是一群孩子围成一个圈,每个人把手中的糖果分一半给右边的人,若分过之后手中的糖果数是奇数,则由老师提供一颗糖果给他,问这样传递多少圈所有人的糖果数都能相等,最终每人手里的糖果数是多少。

    由于题中已经解释了结果是有限的数,那么就直接模拟,要注意分的时候是从前面的人往后面传递。

    代码如下:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int n,ans,tmp,t,a[10009],pre[10009];
     4 bool judge()
     5 {
     6     for(int i = 1; i < n; ++i)
     7         if(a[i] != a[i-1])
     8             return false;
     9     return true;
    10 }
    11 int main()
    12 {
    13     while(scanf("%d",&n)&&n)
    14     {
    15         for(int i = 0; i < n; ++i)
    16             scanf("%d",&a[i]);
    17         tmp = a[n-1]>>1;
    18         ans = 0;
    19         while(1)
    20         {
    21 //            for(int i = 0; i < n; ++i)
    22 //            {
    23 //                a[i]>>=1;
    24 //                t = tmp;
    25 //                tmp = a[i];
    26 //                a[i]+=t;
    27 //                if(a[i]&1) ++a[i];
    28 //            }
    29             for(int i = 0; i < n; ++i)
    30             {
    31                 a[i]>>=1;
    32                 pre[i] = a[i];
    33             }
    34             for(int i = 0; i < n; ++i)
    35             {
    36                 a[(i+1)%n] += pre[i];
    37                 if(a[(i+1)%n]&1) ++a[(i+1)%n];
    38             }
    39             ++ans;
    40             if(judge()) break;
    41         }
    42         printf("%d %d
    ",ans,a[0]);
    43     }
    44     return 0;
    45 }
    View Code

    (自己注释掉的部分没发现问题在哪,头好痛......希望知道的大神赐教orz )

  • 相关阅读:
    [装]JMX监控Hadoop
    [转]JMX的Hello World
    [转]Linux下查看CPU信息、机器型号等硬件信息
    [转] pom.xml 配置详解
    HBase TableExistsException: hbase:namespace
    [转]HBase高可用性的新阶段
    [转]Hadoop 读写数据流
    HBase——强一致性详解
    HBase Master高可用(HA)
    Hadoop HA on Yarn——集群启动
  • 原文地址:https://www.cnblogs.com/Taskr212/p/9553515.html
Copyright © 2011-2022 走看看