a1 x1 + a2 x2 + ...... + xn = k(k <= 10 ^ 18)的正解数

时间:2011-11-03 03:11:15

标签: algorithm combinatorics dynamic-programming

问题是a1 x1 + a2 x2 + ......的解的数量+带有约束的xn = k:1)ai> 0且ai&lt; = 15 2)n> 0且n <= 15 3)xi&gt; ; = 0我能够制定动态编程解决方案但是对于n> 10 ^ 10它运行的时间太长。请指导我获得更有效的信息。 代码

int dp[]=new int[16];
        dp[0]=1;
        BigInteger seen=new BigInteger("0");
        while(true)
        {
            for(int i=0;i<arr[0];i++)
            {
                if(dp[0]==0)
                    break;
                dp[arr[i+1]]=(dp[arr[i+1]]+dp[0])%1000000007;
            }
            for(int i=1;i<15;i++)
                dp[i-1]=dp[i];
            seen=seen.add(new BigInteger("1"));
            if(seen.compareTo(n)==0)
            break;
        }
        System.out.println(dp[0]);

arr是包含系数的数组,答案应该是mod 1000000007,作为不适合int的方式的数量。

0 个答案:

没有答案