分析:
组成单词好说,价值如何体现?
改变指数就行,例如:
这样,组成的单词,指数就是权值,多项式相乘,指数小于50的就OK;
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 int ch[30]; 6 int a[100]; 7 int b[100]; 8 9 10 int main() 11 { 12 int t; 13 scanf("%d",&t); 14 while(t--) { 15 for(int i=1;i<=26;i++) 16 scanf("%d",&ch[i]); 17 18 memset(a,0,sizeof(a)); 19 memset(b,0,sizeof(b)); 20 21 22 b[0] = 1; 23 24 for(int i=1;i<=26;i++) { //26个多项式相乘 25 26 for(int j=0;j<=50;j++) { //前面50项加上新的多项式 27 28 for(int k=0;k<=ch[i]&&k*i+j<=50;k++) { 29 a[k*i+j] +=b[j]; 30 } 31 } 32 memcpy(b,a,sizeof(a)); 33 memset(a,0,sizeof(a)); 34 35 } 36 int cnt = 0; 37 for(int i=1;i<=50;i++) { 38 cnt+=b[i]; 39 } 40 printf("%d\n",cnt); 41 42 } 43 return 0; 44 }