news 2026/4/22 4:21:14

《P3228 [HNOI2013] 数列》

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《P3228 [HNOI2013] 数列》

题目描述

小 T 最近在学着买股票,他得到内部消息:F 公司的股票将会疯涨。股票每天的价格已知是正整数,并且由于客观上的原因,最多只能为 N。在疯涨的 K 天中小 T 观察到:除第一天外每天的股价都比前一天高,且高出的价格(即当天的股价与前一天的股价之差)不会超过 M,M 为正整数。并且这些参数满足 M(K−1)<N。小 T 忘记了这 K 天每天的具体股价了,他现在想知道这 K 天的股价有多少种可能。

输入格式

只有一行用空格隔开的四个数:N、K、M、P。对 P 的说明参见后面“输出格式”中对 P 的解释。输入保证 20% 的数据 M,N,K,P≤20000,保证 100% 的数据 M,K,P≤109,N≤1018。

输出格式

仅包含一个数,表示这 K 天的股价的可能种数对于 P 的模值。

输入输出样例

输入 #1复制

7 3 2 997

输出 #1复制

16

说明/提示

样例解释

输出样例的 16 表示输入样例的股价有 16 种可能:

{1,2,3},{1,2,4},{1,3,4},{1,3,5},{2,3,4},{2,3,5},{2,4,5},{2,4,6},{3,4,5},{3,4,6},{3,5,6},{3,5,7},{4,5,6},{4,5,7},{4,6,7},{5,6,7}。

代码实现:

#include <bits/stdc++.h> using namespace std; typedef long long ll; ll n, k, m; int md; ll qp(ll a, ll b) { ll res = 1; while (b) { if (b&1) res = res*a%md; a = a*a%md; b >>= 1; } return res; } int main () { cin >> n >> k >> m >> md; ll t = m*(k-1), ans; if (m&1) ans = (n-t+(t-k+1)/2)%md*qp(m, k-1)%md; else ans = (n-t)%md*qp(m, k-1)%md+(t-k+1)%md*(qp(m, k-2)*(m/2)%md)%md; ans %= md; if (ans < 0) ans += md; cout << ans; return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 20:39:52

Java中有哪些垃圾回收算法?

Java中的垃圾回收算法主要有3种&#xff0c;分别是标记-清除算法、复制算法、标记-整理算法。 1.标记-清除算法 这种算法的逻辑其实很简单&#xff0c;就是先遍历一遍&#xff0c;把有用的东西都打个勾✅&#xff08;标记&#xff09;&#xff0c;然后把那些没打勾的垃圾直接扔…

作者头像 李华
网站建设 2026/4/16 22:44:28

在RabbitMQ中,怎么确保消息不会丢失?

为了确保消息不会丢失&#xff0c;可以从以下3个方面解决&#xff1a; 1.在创建队列的时候设置durable为true&#xff0c;发布消息的时候设置delivery为2&#xff0c;从而确保队列和消息都是持久的。 这样&#xff0c;就算是RabbitMQ服务器重启也不会造成消息的丢失。 2.开启发…

作者头像 李华
网站建设 2026/4/15 3:01:54

两个链表的第一个公共结点

求解代码 public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {// 初始化两个临时指针&#xff0c;分别指向两个链表的头节点ListNode temp1 pHead1;ListNode temp2 pHead2;// 只要两个指针不指向同一个节点&#xff0c;就继续遍历while (temp1 ! temp2…

作者头像 李华
网站建设 2026/4/20 19:58:56

二分搜索树的特性

二分搜索树的特性 引言 二分搜索树(Binary Search Tree,BST)是一种常见的树形数据结构,在计算机科学中有着广泛的应用。它是一种特殊的二叉树,具有以下特性:每个节点都有一个键值,左子树中的所有键值都小于该节点的键值,右子树中的所有键值都大于该节点的键值。本文将…

作者头像 李华
网站建设 2026/4/20 22:25:48

SpringBoot 实现任意文件在线预览功能

一 文件在线预览在现代工作与生活环境中&#xff0c;文件共享与查看已经成为日常不可或缺的一部分。不过传统的文件处理方式要求用户下载文件到本地后才能查看&#xff0c;这不仅占用了设备的存储空间&#xff0c;还可能导致文件传播效率低下&#xff0c;甚至存在安全隐患。因此…

作者头像 李华