• HDU3067 小t的游戏


    小t的游戏

    Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 367 Accepted Submission(s): 208

    Problem Description
    小t有点神经质,喜欢发明一些稀奇古怪的游戏,比如说左手和右手打架就是他发明的。
    这个周末,小t又发明了一个有趣的硬币游戏:小t手里有6枚硬币,他把硬币分成了两堆,一左一右并排堆放,一堆2个,一堆4个。然后他开始从这两个堆中各取出1个硬币,再组成一个新的堆放在最右边。用(2,4)表示初始两堆,于是作下抽象,第一次操作后(2,4)变成了(1,3,2)。小t继续操作,他从这三堆中继续各取出1个硬币,组成新堆放到最右边。于是(1,3,2)变成了(0,2,1,3),去掉空堆,变成(2,1,3)。小t继续进行以上操作并去除空堆,(2,1,3)变成了(1,2,3)。这时,小t发现如果继续做同样的动作,分堆的硬币不会再有变化了,一直都是(1,2,3)状态,也就是陷入了循环节为1的循环。
    小t突发奇想,他想知道:如果知道硬币的分堆数,和每堆硬币的个数,执行“每次从已有的每一堆硬币中取出1个硬币,凑成新堆”的操作,用(a,b,c,d,….)表示分堆状态(其中a,b,c,d…每个字母都是正整数),分堆状态是否会陷入循环,如果陷入循环,循环节又是多少呢。

    Input
    输入有很多组case,每组case
    第一行一个正整数n (n<65536),表示硬币分为多少堆
    第二行有n个整数,每个数k<65536,表示每堆有多少个硬币,每个数后面都有一个空格。

    Output
    如果分堆状态陷入循环,输出分两行,第一行输出yes,第二行输出一个整数表示循环节长度。
    否则输出就一行no。

    Sample Input
    2
    2 4
    2
    2 3

    Sample Output
    yes
    1
    yes
    3

    Source
    2009 Multi-University Training Contest 16 - Host by NIT

    Recommend
    lcy

    Statistic | Submit | Discuss | Note

    循环节次数与总和有关。
    若恰好是前N个连续数字的和,则循环节为1;
    如7可以写成1,2,4;
    8可以写成1,1,2,4;
    9可以写成1,1,3,4;
    末尾的四每次减少一,正好四次

    #include<stdio.h>
    #include<string.h>
    int main()
    {
        int i,n,ans,sum;
        while(~scanf("%d",&n))
        {
            sum=0;
            while(n--)
            {
                scanf("%d",&i);
                sum=sum+i;
            }
            for(i=1;i<=sum;i++)
            {
                if(sum==(i+1)*i/2)//若恰好是前N个连续数字的和,则循环节为1
                {
                    ans=1;
                    break;
                }
                if(sum<(i+1)*i/2)//若不存在前N个连续数字的和,则循环节为i
                {
                    ans=i;
                    break;
                }
            }
            printf("yes
    %d
    ",ans);
        }
        return 0;
    }
    

    别问我为什么,找规律的题,重点是从这几数的和考虑,而我根本就没找到入口;

    "No regrets."
  • 相关阅读:
    臭氧总量下载网址
    WRF遇到的问题
    linux 查询硬盘、内存、cpu命令
    降维中的特征选择
    偏最小二乘回归分析建模步骤的R实现(康复俱乐部20名成员测试数据)+补充pls回归系数矩阵的算法实现
    R语言机器学习之caret包运用
    用R语言做数据清理(详细教程)
    RColorBrewer的使用
    VOD, TVOD, SVOD FVOD的区别(转)
    Include promo/activity effect into the prediction (extended ARIMA model with R)
  • 原文地址:https://www.cnblogs.com/zxy160/p/7215158.html
Copyright © 2020-2023  润新知