• <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>
            隨筆 - 68  文章 - 57  trackbacks - 0
            <2010年2月>
            31123456
            78910111213
            14151617181920
            21222324252627
            28123456
            78910111213

            常用鏈接

            留言簿(8)

            隨筆分類(74)

            隨筆檔案(68)

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            題目大意是給定一個(gè)數(shù)n,問約數(shù)個(gè)數(shù)為n的最小的數(shù)k是多少。其中1 <= n <= 10000, k <= 10 ^ 15。
            這是一個(gè)經(jīng)典問題了,我一直以為會(huì)有經(jīng)典算法,開始的時(shí)候一直往貪心上想,結(jié)果owen給出了反例。后來(lái)經(jīng)過吉大牛點(diǎn)撥,因?yàn)閗 <= 10 ^ 15,可以根據(jù)這個(gè)定界,最差情況k的素因子也不會(huì)超過13,這樣就可以搜索了!
            實(shí)現(xiàn)的時(shí)候我也犯了幾個(gè)小錯(cuò),一個(gè)是把10 ^ 15少打了一個(gè)0,還有一個(gè)剪枝必須加:如果當(dāng)前結(jié)果的約數(shù)個(gè)數(shù)為f,那么如果n % f不為0,則剪掉,因?yàn)榧s數(shù)個(gè)數(shù)是以乘積的關(guān)系累加的。
             1 #include <cstdio>
             2 const int M = 14;
             3 const long long max = 1000000000000000LL;
             4 
             5 int p[M] = {2357111317192329313741}, k;
             6 long long ans;
             7 void solve(long long v, int factor, int pos)
             8 {
             9     if (factor >= k)
            10     {
            11         if (factor == k)    ans <?= v;
            12         return;
            13     }
            14     if (k % factor) return;
            15     if (pos == M)   return;
            16     for (int i = 1; i <= 50; i++)
            17     {
            18         v *= p[pos];
            19         if (v > max)    break;
            20         solve(v, factor * (i + 1), pos + 1);
            21     }
            22 }
            23 
            24 int main()
            25 {
            26     while (scanf("%d"&k) == 1)
            27     {
            28         ans = max + 1;
            29         solve(110);
            30         if (ans > max)   printf("-1\n");
            31         else             printf("%lld\n", ans);
            32     }
            33 
            34     return 0;
            35 }
            36 
            posted on 2009-03-30 21:44 sdfond 閱讀(296) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Algorithm - Number Theory
            曰曰摸天天摸人人看久久久| 国内精品久久国产| 久久国产精品99精品国产| 麻豆久久久9性大片| 亚洲国产成人精品无码久久久久久综合| 九九精品99久久久香蕉| 久久精品国产色蜜蜜麻豆| 久久人人青草97香蕉| 久久免费视频1| 久久棈精品久久久久久噜噜| 久久婷婷国产综合精品| 国产精品久久国产精品99盘| 国产精品久久久久久影院| 91久久国产视频| 精品久久久久久国产牛牛app| 久久久WWW成人免费毛片| 亚洲国产精品无码久久青草| 97视频久久久| 69久久夜色精品国产69| 久久精品成人| 亚洲中文字幕久久精品无码APP| 久久天天躁狠狠躁夜夜96流白浆| 99精品久久精品一区二区| 久久久WWW成人免费毛片| 久久婷婷人人澡人人爽人人爱| 久久人人妻人人爽人人爽| 999久久久免费国产精品播放| 色偷偷88欧美精品久久久| 影音先锋女人AV鲁色资源网久久| 国产精品久久波多野结衣| 久久噜噜久久久精品66| 麻豆亚洲AV永久无码精品久久| 亚洲狠狠久久综合一区77777| 亚洲国产日韩综合久久精品| 国产精品一区二区久久不卡| 久久久WWW成人免费毛片| 久久久久无码精品国产| 日韩亚洲国产综合久久久| 国产精品久久久亚洲| 久久久亚洲AV波多野结衣| 97超级碰碰碰碰久久久久|