青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

pku3904 容斥原理的運(yùn)用,好題!

解法發(fā)現(xiàn)網(wǎng)上一個(gè)大牛寫的很好,就轉(zhuǎn)載過來吧。可憐的我,開始沒想到算法就算了,想到算法后又刻意依賴STL結(jié)果o(N)寫成o(logN)成功葬送。
解法

題意:給你n個(gè)數(shù),求GCD(gcd(a,b),gcd(c,d))=1的方案數(shù),注意a,b,c,d并不一定兩兩互質(zhì),有多組數(shù)據(jù)

本來這個(gè)題的題解有一大把,但沒有講題解的只有貼代碼的。

本來一直在做題,沒有什么時(shí)間發(fā)題解,但這個(gè)題加深了我對(duì)容斥原理的理解,所以講一下

這個(gè)題的算法是個(gè)偽多項(xiàng)式

首先,先將算法流程說一下,原理后面會(huì)有

Step 1:用篩法篩出10000內(nèi)的素?cái)?shù)表

Step 2:組合素?cái)?shù),用bool數(shù)組記錄由m(m<=5)個(gè)素?cái)?shù)相乘所得數(shù)的m的奇偶

例如:182=2*7*13 ———> m=3 so,bool[182]=false

            2=2 ——>m=1 so,bool[2]=false

            91=7*13 ——>m=2 so,bool[91]=true

            注意12=2^2*3等這種是B=p1^k1*p2^k2+...這種有質(zhì)因數(shù)指數(shù)不為一的合數(shù)不要處理因?yàn)椴粫?huì)用到

以上是預(yù)處理

Step 3:讀入當(dāng)前數(shù)為a,將a分解為質(zhì)因數(shù)形式,注意每個(gè)質(zhì)因數(shù)只被記錄一次

例如:12=2*2*3 則 12會(huì)被分為2*3,多余的2被消去了

Step 4:將分出的素?cái)?shù)進(jìn)行組合,將組合出的a的約數(shù)的time+1

例如:12=2^2*3——>12=2*3——>time[2]++,time[3]++,time[6]++

Step 5:處理之后,ans賦值為C(n,4)即n*(n-1)*(n-2)*(n-3)div 24

Step 6:for i 2-->10000

                if bool[i] then ans:=ans-C(time[i],4)

                               else ans:=and+C(time[i],4);

Step 7:輸出ans


原理:首先考慮一個(gè)問題,1000以內(nèi)6,7,8,9的倍數(shù)有多少個(gè)?答案是

1000div6+1000div7+1000div8+1000div9

-1000div(6*7)-1000div(6*8)-1000div(6*9)-1000div(7*8)-1000div(7*9)-1000div(8*9)

+1000div(6*7*8)+1000div(6*8*9)+1000div(7*8*9)

-1000div(6*7*8*9)

這是容斥原理的一個(gè)最簡(jiǎn)單的應(yīng)用,類比這道題,Step3到4其實(shí)將每個(gè)數(shù)a的不重復(fù)約數(shù)記錄了下來,有公共約數(shù)的四個(gè)數(shù)的方案要從ans中減去,多減的要加上

顯然m為奇時(shí)要減,m為偶時(shí)要加,這和”1000以內(nèi)6,7,8,9的倍數(shù)有多少個(gè)?“這個(gè)問題奇偶是反的,由于a最大為10000,所以m最大可以有5 (2*3*5*7*11<10000,2*3*5*7*11*13>10000)

至于12=2*2*3這種約數(shù)不處理因?yàn)榭梢苑譃?*6,而2和6會(huì)算一次,所以不須再算。


代碼:
 1 # include <cstdio>
 2 # include <map>
 3 # include <cstring>
 4 # include <algorithm>
 5 using namespace std;
 6 int pa[2000],pp=0,sa[10],sp=0;
 7 int refer[5][10001];
 8 void make_prime()
 9 {
10     bool used[10001];
11     memset(used,true,sizeof(used));
12     for(int i=2;i<=10000;i++)
13          if(used[i])
14          {
15              pa[pp++]=i;
16              for(int j=2*i;j<=10000;j+=i)
17                 used[j]=false;
18          }
19 }
20 void spilt(int n)
21 {
22     sp=0;
23     for(int i=0;i<pp&&n!=1;i++)
24         if(n%pa[i]==0)
25         {
26             sa[sp++]=pa[i];
27             while(n%pa[i]==0)
28                 n/=pa[i];
29         }
30 }
31 void putmap(int n)
32 {
33     spilt(n);
34     for(int i=1;i<(1<<sp);i++)
35     {
36         int n1=0,n2=1;
37         for(int j=0;j<5;j++)
38             if(i&(1<<j))
39                 n1++,n2*=sa[j];
40         refer[n1-1][n2]++;
41     }
42 }
43 long long c(int n)
44 {
45     return (long long)n*(n-1)*(n-2)*(n-3)/4/3/2;
46 }
47 long long getans(int n)
48 {
49     long long ans=c(n);
50     for(int i=0;i<5;i++)
51     {
52         bool flag=false;
53         for(int j=1;j<=10000;j++)
54             if(refer[i][j]>=4)
55                 flag=true,
56                 ans+=c(refer[i][j])*(i%2?1ll:-1ll);
57         if(!flag)break;
58     }
59     return ans;
60 }
61 int main()
62 {
63     int n;
64     make_prime();
65     while(scanf("%d",&n)!=EOF)
66     {
67         memset(refer,0,sizeof(refer));
68         for(int i=0;i<n;i++)
69         {
70             int t;
71             scanf("%d",&t);
72             putmap(t);
73         }
74         printf("%lld\n",getans(n));
75     }
76     return 0;
77 }

posted on 2012-02-17 02:03 yzhw 閱讀(421) 評(píng)論(0)  編輯 收藏 引用 所屬分類: combination math

<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

導(dǎo)航

統(tǒng)計(jì)

公告

統(tǒng)計(jì)系統(tǒng)

留言簿(1)

隨筆分類(227)

文章分類(2)

OJ

最新隨筆

搜索

積分與排名

最新評(píng)論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲视频电影在线| 欧美激情第9页| 欧美成人国产一区二区| 久久精品人人做人人爽| 欧美一区二区黄| 久久嫩草精品久久久久| 另类春色校园亚洲| 亚洲福利国产| 亚洲国产精品t66y| 一本色道久久综合亚洲精品按摩 | 国产丝袜美腿一区二区三区| 国产一区二区三区免费观看| 永久久久久久| 夜夜爽99久久国产综合精品女不卡| 亚洲香蕉网站| 猫咪成人在线观看| 99国产精品国产精品久久 | 国产精品久久午夜| 伊人久久婷婷| 亚洲一区久久久| 看片网站欧美日韩| 日韩小视频在线观看专区| 午夜精品久久久久久久蜜桃app | 欧美亚洲一区二区三区| 欧美a级一区| 国产日韩欧美不卡在线| 日韩视频三区| 蜜桃久久精品乱码一区二区| 一区二区三区视频在线| 你懂的国产精品永久在线| 国产精品你懂的| 91久久中文| 久久综合狠狠综合久久综青草| 日韩视频一区二区三区| 久久久久成人网| 欧美黑人在线观看| 欧美一区在线视频| 国产精品www.| 亚洲欧美激情诱惑| 欧美精品国产一区二区| 尤物99国产成人精品视频| 欧美一进一出视频| 夜夜爽av福利精品导航| 亚洲欧美大片| 欧美午夜三级| 久久精品人人做人人爽| 香蕉久久一区二区不卡无毒影院 | 免费观看成人网| 国产精品一区二区三区免费观看 | 老司机精品视频网站| 国产女主播一区二区| 艳女tv在线观看国产一区| 欧美国产日韩一区二区三区| 久久成年人视频| 国产欧美日韩在线| 亚洲男人av电影| 一本久久综合| 欧美日韩直播| 亚洲综合精品四区| 亚洲性感美女99在线| 国产精品久久久久一区二区| 亚洲综合日韩| 亚洲一区免费视频| 国产欧美精品va在线观看| 欧美伊人久久| 久久成人资源| 亚洲国产精品视频一区| 亚洲二区三区四区| 欧美久久九九| 亚洲一区在线播放| 午夜国产一区| 在线精品国产欧美| 欧美粗暴jizz性欧美20| 欧美国产日韩一区二区| 中文日韩在线视频| 亚洲午夜电影在线观看| 国产欧美日韩不卡免费| 久久综合狠狠综合久久激情| 女女同性精品视频| 亚洲性感美女99在线| 亚洲综合国产激情另类一区| 红桃视频成人| 亚洲裸体在线观看| 国产色视频一区| 亚洲第一精品福利| 欧美不卡高清| 欧美二区乱c少妇| 日韩亚洲成人av在线| 日韩视频精品在线| 亚洲天堂免费观看| 亚洲电影免费在线| 一本色道久久99精品综合| 国产人成一区二区三区影院| 欧美chengren| 国产精品精品视频| 免费人成精品欧美精品| 欧美天堂亚洲电影院在线播放| 久久国内精品视频| 欧美日韩精品免费在线观看视频| 久久久999国产| 欧美日韩一区二区国产| 免费观看国产成人| 国产精品美女视频网站| 亚洲电影免费观看高清完整版| 国产精品一区二区久久精品| 亚洲高清视频一区| 国产一区二区三区黄视频| 亚洲精品欧美日韩专区| 亚洲大胆av| 欧美一区午夜精品| 午夜日韩在线观看| 欧美精品一区二区在线观看| 久久人体大胆视频| 国产裸体写真av一区二区 | 亚洲欧美另类中文字幕| 亚洲欧洲视频| 久久久久99| 久久久久国产精品午夜一区| 国产精品久久久久久久app| 亚洲精品免费在线播放| 91久久精品国产91性色| 欧美在线首页| 久久激情综合网| 国产精品视频专区| 亚洲视屏一区| 亚洲综合国产精品| 欧美性猛片xxxx免费看久爱| 亚洲国产精品久久精品怡红院| 激情久久中文字幕| 久久激情五月丁香伊人| 久久久高清一区二区三区| 国产精品羞羞答答| 亚洲欧美日韩精品久久久久| 亚洲综合丁香| 国产精品夜夜夜| 亚洲视频电影图片偷拍一区| av成人免费在线| 欧美人与性动交cc0o| 亚洲茄子视频| 一区二区三区日韩精品视频| 欧美日韩国产在线一区| 在线午夜精品| 欧美在线日韩精品| 国产精品网站在线观看| 亚洲淫性视频| 麻豆精品在线播放| 免费观看成人网| 亚洲精品日韩精品| 欧美日韩在线不卡一区| 亚洲性视频网址| 国产精品永久免费在线| 亚洲欧美卡通另类91av| 久热精品在线视频| 亚洲日韩欧美视频一区| 9久re热视频在线精品| 亚洲一级黄色| 国产精品视频网站| 久久精品亚洲一区| 亚洲第一狼人社区| 亚洲天堂av图片| 国产一区二区三区四区在线观看 | 亚洲清纯自拍| 午夜伦欧美伦电影理论片| 激情一区二区三区| 欧美成在线视频| 亚洲一区免费观看| 欧美成人综合| 亚洲欧美日本日韩| 在线日韩精品视频| 欧美日韩亚洲一区二区三区在线观看 | 久久久激情视频| 亚洲激情影视| 国产精品视频免费一区| 欧美大片在线观看一区| 亚洲淫性视频| 亚洲国产一区在线观看| 欧美aⅴ99久久黑人专区| 欧美激情免费在线| 欧美亚洲一区在线| 99精品国产在热久久| 激情懂色av一区av二区av| 欧美三级电影一区| 久久久久久久精| 一区二区三区日韩精品| 欧美福利精品| 久久精品免费| 午夜视频在线观看一区| 99国产精品久久久久久久久久| 国内精品免费在线观看| 国产精品激情| 欧美精品激情在线| 久久精视频免费在线久久完整在线看 | 国产亚洲欧美另类一区二区三区| 欧美jizzhd精品欧美巨大免费| 亚洲视频在线观看一区| 亚洲精品护士| 亚洲国产中文字幕在线观看| 欧美中文字幕久久| 亚洲香蕉成视频在线观看| 亚洲欧洲一区二区天堂久久|