<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      BiuのACM
      堅持是一種餅~

      Least common multiple

      Partychen like to do mathematical problems. 
      One day, when he was doing on a least common multiple(LCM) problem,
      he suddenly thought of a very interesting question: if given a number of S,
      and we divided S into some numbers , then what is the largest LCM of these numbers?
      partychen thought this problems for a long time but with no result, so he turned to you for help! Since the answer can very big,you should give the answer modulo M.

      【題意】給你一個數N和結果的mod M。求如何劃分N,使得子集和為N的集合的LCM最大。

      從數學上來看,lcm(a, b) = a/gcd(a, b)*b, 只有在gcd(a, b)為1的時候,lcm最大,也就是分割的集合里的每一個數都是互質的。

      每個質數和它的冪次作為分組背包的一組(因為每個數互質的時候,lcm最大);由于dp的時候取模會導致dp結果不正確,而不取模又會導致dp結果過大。由對數的單調性,和對數加法和乘法的性質,dp[i]為i的對數的分割的最大lcm。同時需要另一個數組保留最后結果。

      代碼如下:

       1 #include <iostream>
       2 #include <cmath>
       3 #include <cstring>
       4 #include <algorithm>
       5 #include <cstdio>
       6 using namespace std;
       7 #define ll long long
       8 
       9 int prime[3100], pri_size = 0;
      10 bool isprime[3100];
      11 void sieve(int num)
      12 {
      13     memset(prime, 0, sizeof(prime));
      14     memset(isprime, true, sizeof(isprime));
      15     isprime[0] = isprime[1] = false;
      16     for(int i = 2; i <= num; i++ ) {
      17         if(isprime[i]) {
      18             prime[pri_size++] = i;
      19            // cout << i << " ";
      20         }
      21         for(int j = 0; i*prime[j] <= num; j++){
      22             isprime[i*prime[j]] = false;
      23             if(i%prime[j] == 0) break;
      24         } 
      25     }
      26    // cout << endl;
      27 }
      28 int main()
      29 {
      30     int n, m;
      31     sieve(3000);
      32     while(cin >> n >> m) {
      33         int ans[3100]; 
      34         double dp[3100];
      35         for(int i = 0; i <= n; i++ ) {dp[i] = 0; ans[i] = 1;}
      36         
      37         for(int i = 0; i < pri_size && prime[i] <= n; i++) {
      38             double log_p = log(prime[i]);
      39             for(int j = n; j >= 1; j--) {
      40                 ll pri = prime[i], cnt = 1;
      41                 while(pri <= j) {
      42                     if(dp[j] < dp[j-pri] + log_p*cnt) {
      43                         dp[j] = dp[j-pri] + log_p * cnt;
      44                         ans[j] = ans[j-pri] * pri % m;
      45                     }
      46                     cnt++;
      47                     pri *= prime[i];
      48                 }
      49             }
      50         }
      51         cout << ans[n] << endl;
      52     }
      53 }
      View Code

       

       

       

      posted on 2019-03-05 19:11  Pobo_biu  閱讀(241)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 久久这里都是精品一区| 无码激情亚洲一区| 国产91成人亚洲综合在线| 亚洲精品欧美综合二区| 自拍偷自拍亚洲精品情侣| 四川丰满少妇无套内谢| 国产成人高清亚洲综合| 尤物国精品午夜福利视频| 久久精品亚洲日本波多野结衣| 九九热精品在线视频免费| 好吊视频一区二区三区| 亚洲老熟女乱女一区二区| 亚洲精品日韩精品久久| 亚洲色拍拍噜噜噜最新网站| 亚洲自拍偷拍激情视频| 亚洲av首页在线| 好日子在线观看视频大全免费动漫 | 日本午夜精品一区二区三区电影 | 国产老熟女无套内射不卡| 天天做天天爱夜夜爽导航| 蜜芽久久人人超碰爱香蕉| 国产精品麻豆成人av网| 精品国产亚洲一区二区三区在线观看| 人妻少妇精品无码专区二区| 久久久久久久无码高潮| 欧洲国产成人久久精品综合| 亚洲二区中文字幕在线| 毛片无遮挡高清免费| 亚洲天堂一区二区三区三州| 一 级做人爱全视频在线看| 精品一区二区久久久久久久网站| 遵义县| 最近中文字幕国产精选| 国产乱码精品一区二三区| 国产麻豆精品av在线观看| 久久99久国产麻精品66| 国产成人无码精品久久久露脸 | 亚洲这里只有久热精品伊人| 日日噜噜噜夜夜爽爽狠狠视频 | 中文字幕乱妇无码av在线| 亚洲欧美日本久久网站|