• 福建工程学院16级第一周寒假作业E题----第七集,奇思妙想


                             第七集,奇思妙想

                                                                                                    TimeLimit:2000MS  MemoryLimit:128MB
                                                                                                          64-bit integer IO format:%I64d
    Problem Description

    在经过一个比赛的小插曲后,小A不仅得到主办方的赏识后,还捞到了一大笔钱。有了足够的钱后,他继续出发前往那个聚会城市。由于小A和小C每天都需要赶路,他们需要多买一些舒适的袜子。在离开这个城市前,他先逛了一家袜子批发商店,该商店将不同数量的袜子放入一个个盒子中,且将盒子排成一排,小A看到这样的情景,顿时好奇(程序员的本能):

    若把这些箱子围成一个圈,并且拿走一段连续的箱子,且箱子中的袜子的总数量正好等于小A要买的袜子的数量M,有多少种拿法?(假设有N个盒子,盒子编号1-N)

    同在小A和小C买完了袜子之后,继续朝着聚会城市出发…

    Input

    有多组测试案例,

    每组测试案例,第一行输入一个正整数N,M(1<=N<=10^6, 1<=M<=10^8),表示有N个箱子。

    第二行输入N个非负整数Ai(1<=Ai<=100)、分别表示连续箱子里面的袜子的数量、

    Output

    对于每组测试案例,输出有多少种方法、

    SampleInput
    2 1
    1 1
    3 2
    1 1 1
    3 3
    1 1 1
    1 1
    1
    1 2
    1
    SampleOutput
    2
    3
    1
    1
    0
    题目是思路:题目描述要连续的的一组箱子,那么可以想到用迟取法,也就是定义两个标记,head和end,一开始都指向第一个元素,如果两个标记间的元素之和少于M那么就在尾部加一个元素,如果多余的就在减去头部一个元素,如果等于就方法+1,由于本题将箱子围成一个圈,可以先初始化将所有元素放进同一个数组两遍
    for(i=0; i<n; i++)
    {
                scanf("%d",&a[i]);
               a[n+i]=a[i];
    }

    接下来放段核心代码

    搬砖啦
  • 相关阅读:
    Eclipse快捷键大全(转载)
    为什么你应该(从现在开始就)写博客 via刘未鹏
    Hadoop琐记
    详解MANIFEST.MF文件
    脚本语言琐记
    因为此版本的应用程序不支持其项目类型(.csproj) .
    求助:关于Activator.CreateInstance
    打印网页指定区域
    CSS中的行为——expression
    ASP.NET使用mysql数据库
  • 原文地址:https://www.cnblogs.com/xcantaloupe/p/6293584.html
Copyright © 2020-2023  润新知