3132. 食物

题目链接

3132. 食物

明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!

我们暂且不讨论他有多么睿智,他又幻想了他应该带一些什么东西。

理所当然的,你当然要帮他计算携带 N 件物品的方案数。

他这次又准备带一些受欢迎的食物,如:蜜桃多啦,鸡块啦,承德汉堡等等

当然,他又有一些稀奇古怪的限制,每种食物的限制如下:

  • 承德汉堡:偶数个。
  • 可乐:0 个或 1 个。
  • 鸡腿:0 个,1 个或 2 个。
  • 蜜桃多:奇数个。
  • 鸡块:4 的倍数个。
  • 包子:0 个,1 个,2 个或 3 个。
  • 土豆片炒肉:不超过一个。
  • 面包:3 的倍数个。

注意,这里我们懒得考虑明明对于带的食物该怎么搭配着吃,也认为每种食物都是以‘个’为单位(反正是幻想嘛),只要总数加起来是 N 就算一种方案。

因此,对于给出的 N,你需要计算出方案数,并对 10007 取模。

输入格式

一个整数 N

输出格式

一个整数,表示方案数对 10007 取模后的结果。

数据范围

1N10500

输入样例1:

1

输出样例1:

1

输入样例2:

5

输出样例2:

35

解题思路

生成函数

生成函数是一些子函数的乘积,其中各子函数之间没有关系,主要用来解决求解各子函数组合的方案数问题

例如本问题中以子函数承德汉堡为例:其函数可表示为 f1(x)=1+x2+x4+=11x2,中 xi 的系数表示用承德汉堡做 i 个的方案数,同理,其他子函数如下:

f2(x)=1+x=1x21x f3(x)=1+x+x2=1x31x f4(x)=x+x3+x5=x1x2 f5(x)=1+x4+x8+=11x4 f6(x)=1+x+x2+x3=1x41x f7(x)=1+x=1x21x f8(x)=1+x3+x6+=11x3

其生成函数为 f(x)=f1(x)×f2(x)×f3(x)×f4(x)×f5(x)×f6(x)×f7(x)×f8(x)=11x2×1x21x×1x31x×x1x2×11x4×1x41x×1x21x×11x3=x(1x)4=x×(n=0Cn+4141×xn)=n=0Cn+33×xn+1

故答案即为 Cn+23=(n+2)×(n+1)×n6

  • 时间复杂度:O(1)

代码

// Problem: 食物 // Contest: AcWing // URL: https://www.acwing.com/problem/content/description/3135/ // Memory Limit: 64 MB // Time Limit: 1000 ms // // Powered by CP Editor (https://cpeditor.org) // %%%Skyqwq #include <bits/stdc++.h> //#define int long long #define help {cin.tie(NULL); cout.tie(NULL);} #define pb push_back #define fi first #define se second #define mkp make_pair using namespace std; typedef long long LL; typedef pair<int, int> PII; typedef pair<LL, LL> PLL; template <typename T> bool chkMax(T &x, T y) { return (y > x) ? x = y, 1 : 0; } template <typename T> bool chkMin(T &x, T y) { return (y < x) ? x = y, 1 : 0; } template <typename T> void inline read(T &x) { int f = 1; x = 0; char s = getchar(); while (s < '0' || s > '9') { if (s == '-') f = -1; s = getchar(); } while (s <= '9' && s >= '0') x = x * 10 + (s ^ 48), s = getchar(); x *= f; } const int N=505,mod=10007; int res; char s[N]; int main() { scanf("%s",s); for(int i=0;s[i];i++) res=(res*10+s[i]-'0')%mod; printf("%d",(LL)(res+2)*(res+1)*res/6%mod); return 0; }

__EOF__

本文作者acwing_zyy
本文链接https://www.cnblogs.com/zyyun/p/16793887.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   zyy2001  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2021-10-15 牛客挑战赛53
点击右上角即可分享
微信分享提示