幸運數字 容斥原理 高精度與低精度的加 減 除

2021-07-24 10:00:38 字數 1536 閱讀 6026

題目描述:

lyk 最近運氣很差,例如在 noip 初賽中僅僅考了 90 分,剛剛卡進複賽,於是它決定使用一些方法來增加自己的運氣值。

它覺得,通過收集幸運數字可以快速的增加它的 rp 值。

它給幸運數字下了乙個定義:如果乙個數 x 能被 3 整除或被 5 整除或被 7 整除,則這個數為幸運數字。

於是它想讓你幫幫它在 l~r 中存在多少幸運數字。

輸入格式:

第一行兩個數 l,r。

輸出格式:

乙個數表示答案。

輸入樣例

10 15

輸出樣例

4資料範圍:

對於 50%的資料 1<=l<=r<=10^5。

對於 60%的資料 1<=l<=r<=10^9。

對於 80%的資料 1<=l<=r<=10^18。

對於 90%的資料 1<=l<=r<=10^100。

對於另外 10%的資料 l=1, 1<=r<=10^100。

對於 100%的資料 l, r 沒有前導 0。

思路:

容斥原理

設num(n,i)表示1~n中是i的倍數

則求1~n中3或5或7的倍數為

num(n,3)+num(n,5)+num(n,7)-num(n,3*5)-num(n,3*7)-num(5*7)+num(n,3*5*7)

這樣求出1~r的減去1~l-1的即可

高精度!!!

#include#include#includeusing namespace std;

const

int maxn=1010;

intlen,a[maxn],b[maxn],t[maxn],ans[maxn];

int sa[maxn],sb[maxn],c[2]=;

char s1[maxn],s2[maxn];

void jian2(int *a,int *b)

len++;

}while(sa[0]>1&&!sa[a[0]])

sa[0]--;a[0]=sa[0];

for(int i=1;i<=sa[0];i++)

a[i]=sa[sa[0]-i+1];

}void div(int *r,int *a,int x)

}void add(int *a,int *b)

while(len>1&&!sa[len])

len--;sa[0]=len;

for(int i=0;i<=sa[0];i++) a[i]=sa[i];

}void jian(int *a,int *b)

len++;

}while(a[0]>1&&!a[a[0]])

a[0]--;

}int main()

容斥原理 幸運數字

四川省選scoi2010第一試 幸運數字 題目描述 在中國,很多人都把6和8視為是幸運數字!lxhgww也這樣認為,於是他定義自己的 幸運號碼 是十進位制表示中只包含數字6和8的那些號碼,比如68,666,888都是 幸運號碼 但是這種 幸運號碼 總是太少了,比如在 1,100 的區間內就只有6個 ...

幸運數字 容斥原理 高精度與低精度的加 減 除

題目描述 lyk 最近運氣很差,例如在 noip 初賽中僅僅考了 90 分,剛剛卡進複賽,於是它決定使用一些方法來增加自己的運氣值。它覺得,通過收集幸運數字可以快速的增加它的 rp 值。它給幸運數字下了乙個定義 如果乙個數 x 能被 3 整除或被 5 整除或被 7 整除,則這個數為幸運數字。於是它想...

總結 容斥原理與反演

這個是個好東西.實際上,容斥和反演沒有什麼區別。目錄 題解 cf997c sky full of stars 題解 cf451e devu and flowers 容斥 題解 cjoi2019 登峰造雞境 prufer序列 斯特林數 題解 cf559c c.gerald and giant ches...