acwing3132. 食物(BZOJ3028)
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                acwing3132. 食物(BZOJ3028)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                acwing3132. 食物
題意:
你當(dāng)然要幫他計算攜帶 N 件物品的方案數(shù)。
 承德漢堡:偶數(shù)個。
 可樂:0 個或 1 個。
 雞腿:0 個,1 個或 2 個。
 蜜桃多:奇數(shù)個。
 雞塊:4 的倍數(shù)個。
 包子:0 個,1 個,2 個或 3 個。
 土豆片炒肉:不超過一個。
 面包:3 的倍數(shù)個。
 注意,這里我們懶得考慮明明對于帶的食物該怎么搭配著吃,也認(rèn)為每種食物都是以‘個’為單位(反正是幻想嘛),只要總數(shù)加起來是 N 就算一種方案。
因此,對于給出的 N,你需要計算出方案數(shù),并對 10007 取模。
題解:
如果不會生成函數(shù),可以先看看這個文章
 生成函數(shù)(母函數(shù))
 
 圖片中?所表示的轉(zhuǎn)化在我的博客中也有詳細(xì)解答
代碼:
這個數(shù)字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 pair<int, 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 p=10007; int main() {//rd_test();string s;cin>>s;ll sum=0;for(int i=0;s[i];i++){sum=(sum*10+s[i]-'0')%p;}cout<<sum*(sum+1)*(sum+2)/6%p<<endl;//Time_test(); }總結(jié)
以上是生活随笔為你收集整理的acwing3132. 食物(BZOJ3028)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 万网买的域名怎么备案(万网买的域名怎么备
 - 下一篇: 怎么注册溢价域名(怎么注册溢价域名账号)