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

            coreBugZJ

            此 blog 已棄。

            POJ 3604 Professor Ben

              1/*
              2POJ 3604 Professor Ben
              3
              4
              5----問題描述:
              6
              7Professor Ben is an old stubborn man teaching mathematics in a university. He likes to puzzle his students with perplexing (sometimes boring) problems. Today his task is: for a given integer N, a1,a2,  ,an are the factors of N, let bi be the number of factors of ai, your job is to find the sum of cubes of all bi. Looking at the confused faces of his students, Prof. Ben explains it with a satisfied smile:
              8
              9Let's assume N = 4. Then it has three factors 1, 2, and 4. Their numbers of factors are 1, 2 and 3 respectively. So the sum is 1 plus 8 plus 27 which equals 36. So 36 is the answer for N = 4.
             10
             11Given an integer N, your task is to find the answer.
             12
             13
             14----輸入:
             15
             16The first line contains the number the test cases, Q(1 ≤ Q ≤ 500000). Each test case contains an integer N(1 ≤ N ≤ 5000000)
             17
             18
             19----輸出:
             20
             21For each test case output the answer in a separate line.
             22
             23
             24----樣例輸入:
             25
             261
             274
             28
             29
             30----樣例輸出:
             31
             3236
             33
             34
             35----分析:
             36
             37由算術(shù)基本定理,
             38
             39設(shè) N 有 k 個(gè)質(zhì)因子 P1, P2, . , Pk
             40
             41N = P1^A1 + P2^A2 + . + Pk^Ak
             42
             43設(shè) N 有 m 個(gè)因子 F1, F2, . , Fm
             44
             45Fj = P1^B1j + P2^B2j + . + Pk^Bkj    (0 <= Bij <= Ai)
             46對任意 Fx 和 Fy,當(dāng) x != y 時(shí),必存在 r 使 Brx != Bry
             47
             48則 Fj 的因子數(shù)
             49Sj = (1+B1j) * (1+B2j) * . * (1+Bkj)
             50
             51則最終結(jié)果
             52ANS = S1^3 + S2^3 + . + Sm^3
             53    = (1+B11)^3 * (1+B21)^3 * . * (1+Bk1)^3 + 
             54      (1+B12)^3 * (1+B22)^3 * . * (1+Bk2)^3 + 
             55      . +
             56      (1+B1m)^3 * (1+B2m)^3 * . * (1+Bkm)^3
             57      其中  Bxy = 0, 1, 2, . , Ax
             58
             59合并同類項(xiàng)
             60ANS = (1^3 + 2^3 + . + (1+A1)^3) * 
             61      (1^3 + 2^3 + . + (1+A2)^3) * 
             62      . * 
             63      (1^3 + 2^3 + . + (1+Ak)^3)
             64
             65*/

             66
             67
             68/**********************************************
             69版本二:
             70
             71*/

             72
             73#include <iostream>
             74#include <cstdio>
             75#include <cstring>
             76
             77using namespace std;
             78
             79typedef  __int64  Lint;
             80
             81#define  N   5000009
             82#define  RN  2240
             83
             84int nprime, prime[ RN ];
             85
             86void init() {
             87        int i, j;
             88        memset( prime, 0sizeof(prime) );
             89        nprime = 0;
             90        for ( i = 2; i < RN; ++i ) {
             91                if ( 0 == prime[ i ] ) {
             92                        prime[ nprime++ ] = i;
             93                        for ( j = i + i; j < RN; j += i ) {
             94                                prime[ j ] = 1;
             95                        }

             96                }

             97        }

             98}

             99
            100// calc 1^3 + 2^3 + . + (1+a)^3
            101Lint sum( int a ) {
            102        Lint n = a + 1;
            103        Lint h = ( (n&1? ((n+1)/2*n) : (n/2*(n+1)) );
            104        return h * h;
            105}

            106
            107Lint solve( int n ) {
            108        int i = -1, p, a;
            109        Lint ans = 1;
            110        while ( 1 != n ) {
            111                do {
            112                        ++i;
            113                }
             while ( (i < nprime) && (n % prime[ i ] != 0) );
            114                if ( i >= nprime ) {
            115                        // n 是質(zhì)數(shù)
            116                        a = 1;
            117                        n = 1;
            118                }

            119                else {
            120                        a = 0;
            121                        p = prime[ i ];
            122                        do {
            123                                ++a;
            124                                n /= p;
            125                        }
             while ( n % p == 0 );
            126                }

            127                ans *= sum( a );
            128        }

            129        return ans;
            130}

            131
            132int main() {
            133        int td, n;
            134        init();
            135        scanf( "%d"&td );
            136        while ( 0 < td-- ) {
            137                scanf( "%d"&n );
            138                printf( "%I64d\n", solve(n) );
            139        }

            140        return 0;
            141}

            142
            143
            144
            145/**********************************************
            146版本一:
            147TLE
            148*/

            149/*
            150#include <iostream>
            151#include <cstdio>
            152
            153using namespace std;
            154
            155typedef  __int64  Lint;
            156
            157#define  N   5000009
            158#define  RN  2240
            159
            160void init() {
            161}
            162
            163// calc 1^3 + 2^3 + . + (1+a)^3
            164Lint sum( int a ) {
            165        Lint n = a + 1;
            166        Lint h = ( (n&1) ? ((n+1)/2*n) : (n/2*(n+1)) );
            167        return h * h;
            168}
            169
            170Lint solve( int n ) {
            171        int p = 1, a;
            172        Lint ans = 1;
            173        while ( 1 != n ) {
            174                do {
            175                        ++p;
            176                } while ( (p < RN) && (n % p != 0) );
            177                if ( RN <= p ) {
            178                        // n 是質(zhì)數(shù)
            179                        a = 1;
            180                        n = 1;
            181                }
            182                else {
            183                        a = 0;
            184                        do {
            185                                ++a;
            186                                n /= p;
            187                        } while ( n % p == 0 );
            188                }
            189                ans *= sum( a );
            190        }
            191        return ans;
            192}
            193
            194int main() {
            195        int td, n;
            196        init();
            197        scanf( "%d", &td );
            198        while ( 0 < td-- ) {
            199                scanf( "%d", &n );
            200                printf( "%I64d\n", solve(n) );
            201        }
            202        return 0;
            203}
            204*/

            205

            posted on 2012-06-01 21:30 coreBugZJ 閱讀(1729) 評論(1)  編輯 收藏 引用 所屬分類: ACMAlgorithmMathematics課內(nèi)作業(yè)

            Feedback

            # re: POJ 3604 Professor Ben 2014-02-02 12:18 kkkwjx

            N = P1^A1 + P2^A2 + . + Pk^Ak
            這里為什么是相加而不是相乘?  回復(fù)  更多評論   


            精品久久久久久无码人妻蜜桃| 久久精品www| 久久夜色精品国产亚洲| 亚洲中文字幕无码久久综合网| 久久综合国产乱子伦精品免费| 国产精品久久久久影视不卡| 狠狠精品久久久无码中文字幕| 午夜精品久久久久久影视777| 亚洲色婷婷综合久久| 精品免费tv久久久久久久| 久久综合色区| 久久久精品国产sm调教网站| 久久激情亚洲精品无码?V| 久久亚洲精品成人无码网站 | 久久亚洲AV成人无码软件| AV无码久久久久不卡蜜桃| 久久国产高清字幕中文| 婷婷久久综合九色综合九七| 精品综合久久久久久888蜜芽| 久久国产成人| 久久久久久亚洲精品成人| 久久亚洲精品无码播放| 久久精品无码专区免费青青| 久久久久国产| 成人资源影音先锋久久资源网| 欧美午夜A∨大片久久| 91视频国产91久久久| 久久婷婷午色综合夜啪| 久久亚洲综合色一区二区三区| 国产精品99久久久久久宅男小说| 欧美激情精品久久久久| 久久人人爽人人爽人人片AV东京热 | 无码国产69精品久久久久网站| 久久www免费人成看国产片| 99国产欧美久久久精品蜜芽| 久久这里只有精品首页| 久久男人中文字幕资源站| 青青国产成人久久91网| 国产亚洲精品美女久久久| 亚洲色大成网站www久久九 | 久久精品国产一区二区|