松鼠分松果解题 c++

题目

描述

在一个天气晴朗的早晨,有k只可爱的小松鼠来到文山湖旁,看见地上有n堆松果

松鼠王国有一个规定,看到有很多堆松果时,取松果的堆数必须连续。比如只能取第2堆,第3堆,第4堆的松果,而不能取第2堆,第3堆,第5堆的松果。当然,只取其中一堆松果也是没有问题的。

而且,为了王国的公平正义,取完松果后,松果的总数必须能让k只小松鼠平分

所以,请聪明的你帮笨笨的小松鼠算一算,到底有多少种取法呢?

输入
第一行输入松果的堆数n,其中1 <= n <= 3 * 10^41<=n<=3∗10
4

第二行输入从第1堆到第n堆,每堆的松果个数,每个数字用空格分隔,其中 0 < 每堆的松果数 < 10^40<每堆的松果数<10
4

第三行输入松鼠的个数k,其中2 <= k <= 10^42<=k<=10
4

输出
输出一个整数,表示有多少种取法

理解

就是说如果要去连续堆的数字,而且数字应该是要可以被k整除的
所以在此,另有其人提供了思路(wu,确实很难想
就是 如果这一堆可以被k整除,那么前一个数/k的余数是和这一堆后一个数/k的余数是一样的,那么我们只要计算出到底有多少个余数一样
计算出来之后,得到的a,可以得知如果每一堆的松果可以相互连接形成一个更大的堆,所以,我们需要像计算比赛场数一样,得到的取法为 a + (a-1)+(a-2)…
通过等差求和公式又可以进行简化
最后得到以下的代码

c++

#include <bits/stdc++.h>
using namespace std;int main()
{   int n_time,get,b[30002],qianzui[30002],num;cin>>n_time;for (int i = 0; i < n_time; i++){   cin>>b[i];}cin>>num;qianzui[0]=0;for (int i = 1; i <= n_time; i++){qianzui[i]=b[i-1]+qianzui[i-1];}int chunchu[30002]={0};for (int i = 0; i <= n_time; i++){   chunchu[qianzui[i]%num]++;}    int result=0;for (int i = 0; i <= n_time; i++){   int m =chunchu[i]-1;result += (m+1)*m/2 ;}cout<<result;
}

python

a = input()
b = [int(i) for i in input().split()]
math = int(input())
res = 0
qianzui = [b[0]]
all_res = 0
for i in range(1,len(b)):qianzui.append(qianzui[i-1]+b[i])
qianzui.insert(0,0)
yushu = [int(i%math) for i in qianzui]
def answer(x):w= 0for i in range(1,x+1):w += ireturn w
for chu in range(0,math):test = yushu.count(chu)-1all_res += answer(test)
print(all_res)

松鼠分松果解题 c++相关推荐

  1. 牛客练习赛59 小松鼠吃松果(优化dp二维偏序)

    小松鼠吃松果 非常nicenicenice的一道题 首先考虑dpdpdp 容易想到按照时间来排序 然后定义dp[i]dp[i]dp[i]为考虑前iii个果子且吃掉第iii个的最大价值 那么每次都去前面 ...

  2. C语言:L1-031 到底是不是太胖了 (10分)(解题报告)

    立志用更少的代码做更高效的表达 据说一个人的标准体重应该是其身高(单位:厘米)减去100.再乘以0.9所得到的公斤数.真实体重与标准体重误差在10%以内都是完美身材(即 | 真实体重 − 标准体重 | ...

  3. BZOJ 4710 [Jsoi2011]分特产 解题报告

    4710 [Jsoi2011]分特产 题意 给定\(n\)个集合,每个集合有相同的\(a_i\)个元素,不同的集合的元素不同.将所有的元素分给\(m\)个不同位置,要求每个位置至少有一个元素,求分配方 ...

  4. L1-022 奇偶分家 (10 分) 含解题思路 C语言 位运算

    L1-022 奇偶分家 (10 分) 给定N个正整数,请统计奇数和偶数各有多少个? 输入格式: 输入第一行给出一个正整N(≤1000):第2行给出N个非负整数,以空格分隔. 输出格式: 在一行中先后输 ...

  5. L1-021 重要的话说三遍 (5 分) 含解题思路 C语言

    L1-021 重要的话说三遍 (5 分) 这道超级简单的题目没有任何输入. 你只需要把这句很重要的话 -- "I'm gonna WIN!"--连续输出三遍就可以了. 注意每遍占一 ...

  6. 测试点3错的来:1028 人口普查 (20分)(解题报告)

    立志用更少的代码做更高效的表达 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 20 ...

  7. C语言满分代码:1018 锤子剪刀布 (20分)(解题报告)

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记 ...

  8. C语言 满分代码:L1-044 稳赢 (15分)(解题报告)

    立志用更少的代码做更高效的表达 大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招.但是!为了 ...

  9. C语言 满分代码:L1-043 阅览室 (20分)(解题报告)

    立志用更少的代码做更高效的表达 天梯图书阅览室请你编写一个简单的图书借阅统计程序.当读者借书时,管理员输入书号并按下S键,程序开始计时:当读者还书时,管理员输入书号并按下E键,程序结束计时.书号为不超 ...

最新文章

  1. 单目摄像头标定与测距
  2. BZOJ 1096: [ZJOI2007]仓库建设
  3. Python学习笔记.OS学习笔记 OS操作系统(operating system)(三) 日期和时间
  4. Effective C# 原则1:尽可能的使用属性(property),而不是数据成员(field)
  5. FastJson序列化Json自定义返回字段,普通类从spring容器中获取bean
  6. mysql的别名可以动态么_mysql别名的使用
  7. Linux系统文件I/O编程(一)---open()等基本函数
  8. iometer-2006_07_27.common-src编译
  9. 第64课 跳绳比赛 《小学生C++趣味编程》
  10. Vue调试神器vue-devtools - 插件下载安装
  11. python的表达式范围怎么写_python表达式
  12. java在未来_如何在java中创建一个完整的未来
  13. inno setup读取XML文件
  14. 最长公共子序列lcs 51nod1006
  15. 笔记本电脑+USB接口GPS+WM6模拟器+PPC版城际通
  16. 如何申请屏蔽垃圾短信
  17. 二叉树有关的计算机二级选择题,2016计算机二级考试选择题训练及答案
  18. [有感而发]与刺客独行
  19. JavaScript学习笔记(三)---事件、正则表达式、ES6、运动
  20. JavaScript小记——Ajax异步请求

热门文章

  1. Postman使用小技巧 - 用Postman生成Request代码
  2. SecureCRT和乱码
  3. ListView的用法以及即时刷新
  4. 新浪张俊林:大语言模型的涌现能力——现象与解释
  5. display:weston:weston-simple-egl
  6. 计算机网络各层协议说明及常见协议
  7. Java 实现多继承
  8. 税费申报计算机代码,C语言编写一个计算个人所得税的程序,要求输入收入金额,能够输...
  9. 9.4 GestureRecognizer muli 多个
  10. Html5大文件断点续传实现方法