zoukankan      html  css  js  c++  java
  • Bother

    Bother

    Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other)
    Total Submission(s) : 17   Accepted Submission(s) : 14
    Problem Description
    随着物理学的发展,科学家们发现了越来越多的粒子。有一天,筱莜在做实验的时候发现了一种麻烦的粒子,因为这些粒子必须成对产生或消失。 面对这些粒子,筱莜开始头痛,怎么放置这些粒子才能让他们都消失呢? 经过很多天的努力,筱莜终于设计出了一个实验装置,它是一个的立方体,编号A,B,C,……H,如图所示, [center][img]/data/images/C61-1002-1.JPG[/img][/center] 每个顶点上都有一定数量的“麻烦”子,不同顶点初始的“麻烦”子数量可能不同。每次可以选择两个相邻的顶点,让他们同时产生或者消失。例如:每个照相机里的初始粒子数为1,0,1,0,3,1,0,0,那么一个合法的操作顺序为:EF-,EA-,AD+,AE-,DC-(EF-表示点E、F减少同样数目的粒子,+表示同样数目增加)。这样所有的粒子都消失了。 因为有时给出的粒子数不能全部消失,这事又让筱莜头痛了,现在请你帮助小兔判断一下,给出的粒子最后能不能都消失掉。
     
    Input
    多组输入,每组数据为8个数字(int范围内),以-1结束.
     
    Output
    如果能使所有粒子都消失,输出“All the seeds can be cleared away!”,否则输出“Sorry,it can't be cleared away!”。
     
    Sample Input
    1 0 1 0 3 1 0 0 28 74 11 80 75 30 63 1 -1
     
    Sample Output
    All the seeds can be cleared away! Sorry,it can't be cleared away! [hint]我们可以将立方体的8个顶点染成红色和蓝色,要求任意两个相邻的顶点颜色补同。 若A,B,C,D的粒子数分别是a,b,c,d,A,C同色, 我们可以通过运输将C点的粒子都移到A点(先让A,B同时增加c个粒子,然后将B,C同时减少c个粒子, 此时A,B,C,D的粒子为,a+c,b,0,d),这样我们解决这个问题就简单多了。[/hint]
     
    Author
    Rabbit
     
    Source
    HZIEE 2007 Programming Contest
     
     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 
     4 int main()
     5 {
     6     int a[8],i,sign;
     7     while(1)
     8     {
     9         sign=0;
    10         for(i=0;i<8;i++)
    11         {
    12             scanf("%d",&a[i]);
    13             if(a[0]==-1)
    14                 return;
    15         }
    16         if(a[0]+a[2]+a[5]+a[7]!=a[1]+a[3]+a[4]+a[6])
    17             {printf("Sorry,it can't be cleared away!
    ");continue;}
    18         else
    19         {
    20             a[0]+=a[2];
    21             a[4]+=a[6];
    22             a[1]+=a[3];
    23             a[5]+=a[7];
    24             a[0]+=a[5];
    25             a[4]+=a[1];
    26 
    27             if(a[0]==a[4])
    28                 sign=0;
    29             else
    30                 sign=1;
    31         }
    32         if(sign==0)
    33             printf("All the seeds can be cleared away!
    ");
    34         else
    35             printf("Sorry,it can't be cleared away!
    ");
    36     }
    37     return 0;
    38 }
    View Code
    转载请备注:
    **************************************
    * 作者: Wurq
    * 博客: https://www.cnblogs.com/Wurq/
    * Gitee: https://gitee.com/wurq
    **************************************
  • 相关阅读:
    (转)Java垃圾回收机制
    ThreadPoolExecutor线程池参数说明
    深入Synchronized和java.util.concurrent.locks.Lock的区别详解
    java集合类说明及区别
    JAVA中堆栈和内存分配
    深入理解Java对象序列化
    Java 序列化Serializable
    transient在java中的作用
    let和const命令
    第9章 css3多列布局
  • 原文地址:https://www.cnblogs.com/Wurq/p/3750296.html
Copyright © 2011-2022 走看看