• <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é)

            久久久久久久91精品免费观看| 久久久久免费视频| 日韩AV无码久久一区二区| 久久偷看各类wc女厕嘘嘘| avtt天堂网久久精品| 久久精品国产亚洲AV不卡| 香蕉aa三级久久毛片| 无码人妻久久久一区二区三区| 国产欧美久久久精品| 亚洲人成无码www久久久| 麻豆一区二区99久久久久| 国内精品久久久久久久涩爱| 亚洲综合久久久| 91久久精品国产91性色也| 精产国品久久一二三产区区别 | 久久精品成人欧美大片| 国内精品久久久久影院薰衣草| 色综合久久88色综合天天| 亚洲精品高清国产一线久久| 狠狠色综合网站久久久久久久| 久久精品www人人爽人人| 2019久久久高清456| 欧美精品丝袜久久久中文字幕 | 国内精品久久久久久久影视麻豆| 久久午夜福利无码1000合集| 久久国产V一级毛多内射| 久久被窝电影亚洲爽爽爽| 中文字幕无码精品亚洲资源网久久| 久久男人中文字幕资源站| 久久久久国产精品麻豆AR影院 | 久久精品亚洲乱码伦伦中文| 久久se精品一区精品二区| 国产高潮国产高潮久久久| 无码日韩人妻精品久久蜜桃| 久久AV高潮AV无码AV| 久久午夜无码鲁丝片| 久久久久久九九99精品| 国产精品久久久久无码av| 欧美综合天天夜夜久久| 久久国产免费直播| 要久久爱在线免费观看|