4745 跑步

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
long long f[100005];
int a(int x)
{
 return (3*x*x-x)/2;
}
int main()
{
 int n,p;
 cin>>n>>p;
 f[0]=1;
 for(int i=1;i<=n;i++)
  for(int j=1;;j++)
  {
   int x=a(j),y=a(-j);
   if(x<=i)
    f[i]=((f[i]+(j&1?1:-1)*f[i-x])%p+p)%p;
   if(y<=i)
    f[i]=((f[i]+(j&1?1:-1)*f[i-y])%p+p)%p;
   if(x>i||y>i)break;
  }
 cout<<f[n]<<endl;
 return 0;
}
相关推荐
潼心1412o3 分钟前
数据结构(长期更新)第8讲:队列
数据结构
铅笔小新z16 分钟前
【C++】从理论到实践:类和对象完全指南(上)
开发语言·c++
kyle~28 分钟前
算法---贪心算法(Greedy Algorithm)
算法·贪心算法
fashion 道格32 分钟前
C 语言数组拼接:从基础实现到细节优化
算法
go_bai38 分钟前
Linux-线程
linux·开发语言·c++·经验分享·笔记
代码AC不AC1 小时前
【C++】智能指针
c++·智能指针
zzzsde1 小时前
【C++】二叉搜索树
开发语言·c++
头发还没掉光光1 小时前
Linux多线程之自旋锁与读写锁
linux·运维·算法
fashion 道格1 小时前
C 语言希尔排序:原理、实现与性能深度解析
数据结构·算法·排序算法
无限进步_1 小时前
C语言atoi函数实现详解:从基础到优化
c语言·开发语言·c++·git·后端·github·visual studio