HDU1398母函数

HDU1398母函数
http://acm.hdu.edu.cn/showproblem.php?pid=1398

将增量存在数组中,这次有17个表达式相乘。
#include  < iostream >

using   namespace  std;

const   int  M = 301 ;
int  table[ 18 ] = {
    
0 , 1 , 4 , 9 , 16 , 25 , 36 , 49 , 64 , 81 , 100 , 121 , 144 , 169 , 196 , 225 , 256 , 289 }; // 存储第i个表达式的增量
int  a[M];
int  b[M];


int  main()
{
    
int  i,j,k,n;
    
while (scanf( " %d " , & n) != EOF,n)
    {
        
for (i = 0 ;i <= n;i ++ )
        {
            a[i]
= 1 ;
            b[i]
= 0 ;
        }
        
for (i = 2 ;i <= 17 ;i ++ ) // 17个表达式
        {
            
for (j = 0 ;j <= n;j ++ )
                
for (k = 0 ;k + j <= n;k += table[i]) // 增量为table[i]
                    b[k + j] += a[j];
            
for (j = 0 ;j <= n;j ++ )
            {
                a[j]
= b[j];
                b[j]
= 0 ;
            }
        }
        printf(
" %d\n " ,a[n]);
    }
    
return   0 ;
}




你可能感兴趣的:(HDU1398母函数)