• <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
            數(shù)據(jù)加載中……

            ACdream 1159(組合-遞推-優(yōu)化)

            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

            求出素數(shù)后然后,然后然后就是排列組合的問題了。
            dp[i][j]表示在前i個素數(shù)里選j個數(shù)相乘的和
            dp[i][j]= dp[i-1][j-k]*exp[i][k]   0<=k<=j求和
            這里邊算邊模
            a[i][j]表示在前i個素數(shù)里j個數(shù)組成結(jié)果,則
            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;    //寫了那么素數(shù)篩法了,居然會在這里載!!!!
                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;   //哎,方程的優(yōu)化,還是沒有經(jīng)驗啊!!這里之前我是寫了個三重的循環(huán)呢。可以迭代的啊。
                        dp[i][j]=(dp[i-1][j]+sum) % mod;
                    }
                }
                mul
            =1;
                for (i=1; i<=500 ; i++ )
                {
                    mul
            =mul*(pri[i]-1) % mod;    //方程優(yōu)化!!!
                    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;
            }


            總結(jié):方程的優(yōu)化,降低維數(shù)!!!!!!!!!!!!!!!!!!!!
            真的是弱爆了啊。。。。。。。。

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

            国产精品对白刺激久久久| 99久久精品国产综合一区| 国内精品综合久久久40p| 久久久国产精华液| 久久精品国产99久久久| 国产精品午夜久久| 久久99精品久久久大学生| 国产精品久久久久无码av| 久久99这里只有精品国产| 亚洲精品高清久久| 久久久久亚洲AV无码专区首JN| 国产精品99精品久久免费| 久久无码中文字幕东京热| a级毛片无码兔费真人久久| 亚洲欧美成人综合久久久 | 亚洲中文字幕无码久久精品1| 99久久久国产精品免费无卡顿| 婷婷久久综合九色综合九七| 久久精品国产亚洲av高清漫画| 亚洲а∨天堂久久精品| 国产高潮久久免费观看| 99精品国产在热久久无毒不卡| 中文精品99久久国产 | 九九99精品久久久久久| 久久精品aⅴ无码中文字字幕不卡| 国内精品久久久久久久涩爱| 2021久久精品国产99国产精品| 蜜臀av性久久久久蜜臀aⅴ麻豆| 一级做a爰片久久毛片毛片| 久久伊人中文无码| 久久久久九九精品影院| 久久国产成人午夜aⅴ影院| 久久精品国产秦先生| 91精品国产乱码久久久久久 | 久久精品国产亚洲网站| 久久er热视频在这里精品| 久久久无码人妻精品无码| 久久精品a亚洲国产v高清不卡| 国产产无码乱码精品久久鸭| 国产精品美女久久久m| 久久综合久久综合久久综合|