做网站活动,免费注册企业,京津冀协同发展纲要,做网站 站内搜索引擎acwing3132. 食物
题意#xff1a;
你当然要帮他计算携带 N 件物品的方案数。 承德汉堡#xff1a;偶数个。 可乐#xff1a;0 个或 1 个。 鸡腿#xff1a;0 个#xff0c;1 个或 2 个。 蜜桃多#xff1a;奇数个。 鸡块#xff1a;4 的倍数个。 包子#xff1a;0 个…acwing3132. 食物
题意
你当然要帮他计算携带 N 件物品的方案数。 承德汉堡偶数个。 可乐0 个或 1 个。 鸡腿0 个1 个或 2 个。 蜜桃多奇数个。 鸡块4 的倍数个。 包子0 个1 个2 个或 3 个。 土豆片炒肉不超过一个。 面包3 的倍数个。 注意这里我们懒得考虑明明对于带的食物该怎么搭配着吃也认为每种食物都是以‘个’为单位反正是幻想嘛只要总数加起来是 N 就算一种方案。
因此对于给出的 N你需要计算出方案数并对 10007 取模。
题解
如果不会生成函数可以先看看这个文章 生成函数(母函数) 图片中❓所表示的转化在我的博客中也有详细解答
代码
这个数字N可以通过秦久韶算法边取模边计算
#include bits/stdc.h
#include unordered_map
#define debug(a, b) printf(%s %d\n, a, b);
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pairint, int PII;
clock_t startTime, endTime;
//Fe~Jozky
const ll INF_ll 1e18;
const int INF_int 0x3f3f3f3f;
void read(){};
template typename _Tp, typename... _Tps void read(_Tp x, _Tps... Ar)
{x 0;char c getchar();bool flag 0;while (c 0 || c 9)flag| (c -), c getchar();while (c 0 c 9)x (x 3) (x 1) (c ^ 48), c getchar();if (flag)x -x;read(Ar...);
}
template typename T inline void write(T x)
{if (x 0) {x ~(x - 1);putchar(-);}if (x 9)write(x / 10);putchar(x % 10 0);
}
void rd_test()
{
#ifdef ONLINE_JUDGE
#elsestartTime clock ();freopen(data.in, r, stdin);
#endif
}
void Time_test()
{
#ifdef ONLINE_JUDGE
#elseendTime clock();printf(\nRun Time:%lfs\n, (double)(endTime - startTime) / CLOCKS_PER_SEC);
#endif
}
string s;
const int p10007;
int main()
{//rd_test();string s;cins;ll sum0;for(int i0;s[i];i){sum(sum*10s[i]-0)%p;}coutsum*(sum1)*(sum2)/6%pendl;//Time_test();
}