• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            ArcTan

            dfs
            隨筆 - 16, 文章 - 117, 評論 - 6, 引用 - 0
            數據加載中……

            ACdream 1159(組合-遞推-優化)

            1159: One Theorem, One Year

            Time Limit: 1 Sec  Memory Limit: 128 MB
            Submit: 21  Solved: 12
            [Submit][Status][Web Board]

            Description

            A number is Almost-K-Prime if it has exactly K prime numbers (not necessarily distinct) in its prime factorization. For example, 12 = 2 * 2 * 3 is an Almost-3-Prime and 32 = 2 * 2 * 2 * 2 * 2 is an Almost-5-Prime number. A number X is called Almost-K-First-P-Prime if it satisfies the following criterions:

            1.      X is an Almost-K-Prime and

            2.      X has all and only the first P (P ≤ K) primes in its prime factorization.

            For example, if K=3 and P=2, the numbers 18 = 2 * 3 * 3 and 12 = 2 * 2 * 3 satisfy the above criterions. And 630 = 2 * 3 * 3 * 5 * 7 is an example of Almost-5-First-4-Pime.

            For a given K and P, your task is to calculate the summation of Φ(X) for all integers X such that X is an Almost-K-First-P-Prime.

            Input

            Input starts with an integer T (≤ 10000), denoting the number of test cases.

            Each case starts with a line containing two integers K (1 ≤ K ≤ 500) and P (1 ≤ P ≤ K).

            Output

            For each case, print the case number and the result modulo

            1000000007

            .

            Sample Input

            3 3 2 5 4 99 45

            Sample Output

            Case 1: 10 Case 2: 816 Case 3: 49939643

            求出素數后然后,然后然后就是排列組合的問題了。
            dp[i][j]表示在前i個素數里選j個數相乘的和
            dp[i][j]= dp[i-1][j-k]*exp[i][k]   0<=k<=j求和
            這里邊算邊模
            a[i][j]表示在前i個素數里j個數組成結果,則
            a[i][j]=mul[i]*dp[i][j-1]
            這里也邊算模。

            #include<stdio.h>
            #include<string.h>
            #include<math.h>
            int pri
            [550],b[3705];  //這里之前是3500要錯哦
            long long dp[505][505],a[505][505];
            long long mod=1000000007;
            int GetPri()
            {
                int i
            ,j,tot;
                memset(b,0,sizeof(b));
                i=2;
                tot=0;    //寫了那么素數篩法了,居然會在這里載?。。。?br />    while (i<=3700)
                {
                    while (b
            [i])    i++;
                    pri[++tot]=i;
                    j=i;
                    while (j<=3700)
                    {
                        b
            [j]=1;
                        j+=i;
                    }
                }
                return 
            0;
            }

            int Cal()
            {
                int i
            ,j;
                long long sum,mul;
                dp[0][0]=1;
                for (i=1; i<=500 ; i++ )
                {
                    dp
            [i][0]=1;
                    sum=0;
                    for (j=1; j<=500 ; j++ )
                    {
                        sum
            =(sum*pri[i]+dp[i-1][j-1]*pri[i]) % mod;   //哎,方程的優化,還是沒有經驗啊??!這里之前我是寫了個三重的循環呢。可以迭代的啊。
                        dp[i][j]=(dp[i-1][j]+sum) % mod;
                    }
                }
                mul
            =1;
                for (i=1; i<=500 ; i++ )
                {
                    mul
            =mul*(pri[i]-1) % mod;    //方程優化!??!
                    for (j=i; j<=500 ; j++ )
                        a[i][j]=mul*dp[i][j-i] % mod;
                }
            }

            int main()
            {
                int p
            ,cas,n,m;
                GetPri();
                Cal();
                scanf("%d",&p);
                cas=0;
                while (p--)
                {
                    scanf(
            "%d%d",&n,&m);
                    printf("Case %d: %lld\n",++cas,a[m][n]);
                }
                return 
            0;
            }


            總結:方程的優化,降低維數!?。。。。。。。。。。。。。。。。。?!
            真的是弱爆了啊。。。。。。。。

            posted on 2012-04-29 17:15 wangs 閱讀(213) 評論(0)  編輯 收藏 引用 所屬分類: ACM-數學

            亚洲精品成人久久久| 色综合久久天天综线观看| 一本久久免费视频| 三级韩国一区久久二区综合 | 伊人久久大香线蕉av一区| 久久99热这里只有精品66| 伊人久久大香线焦AV综合影院| 久久久亚洲欧洲日产国码是AV| 久久久久se色偷偷亚洲精品av| 久久夜色精品国产噜噜噜亚洲AV| 亚洲人成伊人成综合网久久久| 久久精品国产清高在天天线| a级毛片无码兔费真人久久| 日韩影院久久| 2021少妇久久久久久久久久| 久久精品国产99国产精品| 中文字幕无码免费久久| 国产欧美久久一区二区| 日韩久久久久中文字幕人妻| 久久夜色精品国产噜噜麻豆 | 四虎国产精品免费久久5151| 久久人妻少妇嫩草AV蜜桃| 久久男人Av资源网站无码软件| 久久精品18| 久久国产精品-国产精品| 免费精品久久天干天干| 久久精品国产99久久香蕉| 日韩精品久久久久久久电影蜜臀| 久久国产美女免费观看精品| 久久人爽人人爽人人片AV | 91久久香蕉国产熟女线看| 久久精品亚洲AV久久久无码| 国产午夜精品理论片久久| 久久99国产精品久久99| 久久久久亚洲AV无码永不| 亚洲国产精品一区二区久久hs| 亚洲精品99久久久久中文字幕| 久久综合综合久久97色| 久久精品亚洲中文字幕无码麻豆| 久久精品国产亚洲av麻豆图片| 一级女性全黄久久生活片免费|