題目描述:
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...