【硬幣君第一彈】HDU_1398_母函數

來源:互聯網
上載者:User

題目大意:秘銀島上有一些硬幣,這些硬幣為1,4,9,……17^2的面值,拿某個面值,求解有幾種拿法。

輸入N:
2      10      30 0

輸出OT:

1        4        27

典型母函數。數學分析之。公式為n=g(ot)=(1+x+x^2+x^3+...x^n)(1+x^2+x^4+x^6....x^n)(1+x^17.....+x^17n),題目最大到300就停了,因為求平方畢竟很耗時間。

可用數組存下不同的餘額(面值就是累加增長值),那一句稍微懂了點。。雖然一迴圈眼暈。。當然再獨立做幾道可能就沒問題了。

#include <iostream>using namespace std;const int INF=350;//300就停了int c1[INF+1],c2[INF+1];int coin[17]={1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,16*16,17*17};int main(){int n=1;while(cin>>n && n!=0){for(int i=0;i<=n;i++){c1[i]=1;c2[i]=0;}for(int i=2;i<=17;i++)//這個是每個係數 {for(int j=0;j<=n;j++){for(int k=0;k+j<=n;k+=coin[i-1])//累加值為面值數{c2[k+j]+=c1[j];}}for(int j=0;j<=n;j++){c1[j]=c2[j];c2[j]=0;//這個語句原來是擦屁股工作…… }}cout<<c1[n]<<endl;}return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.