有多少個數不是2 5 11 13的倍數。 (大數)

2021-08-15 09:05:13 字數 819 閱讀 1941

時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 32768k,其他語言65536k

64bit io format: %lld

給出乙個數n,求1到n中,有多少個數不是2 5 11 13的倍數。

本題有多組輸入

每行乙個數n,1<=n<=10^18.

每行輸出輸出不是2 5 11 13的倍數的數共有多少。
這種題套公式做。。。
#includeusing namespace std;

int main()

{ long long n,sum=0;

long long a,b,c,d,ab,ac,ad,bc,bd,cd,abc,acd,bcd,abd,abcd;

while(cin>>n)

{//2,5,11,13的倍數

a=n/2;

b=n/5;

c=n/11;

d=n/13;

//兩數的倍數

ab=n/10;

ac=n/22;

ad=n/26;

bc=n/55;

bd=n/65;

cd=n/143;

//三數的倍數

abc=n/110;

abd=n/130;

acd=n/286;

bcd=n/715;

//四數的倍數

abcd=n/1430;

sum=a+b+c+d-ab-ac-ad-bc-bd-cd+abc+abd+acd+bcd-abcd; //不可寫成乘法形式

cout<

N 的末尾有多少個0?

n的階乘末尾有多少0呢?首先,得思考一下0到底是由哪些數貢獻的,顯而易見,乙個2和5能貢獻乙個0,然後我們只需要計算2和5的因子的個數即可,最後取最小值就是0的個數!n的階乘是從1到n的乘積,因子2的個數明顯多於5,只需要計算因子5的數量即可。1 n中5的倍數有n 5個,5 的倍數有n 5 個,5 ...

數字DP 尋找範圍內沒有62的有多少個數

數字dp就是把數拆成乙個乙個的,然後,看 上一位如果是6的話,這一位就不能是2,這個數加上往下遞減 所得到的總數就是結果。其中有一點就是limit,資料的範圍很可能不是整數,就用乙個limit,看上一位是否達到了最大值,如果達到了最大值,這一位的範圍就是 0 最大值 再往下傳遞。總之三個引數,len...

100 的階乘末尾有多少個0

題目 今天在網上看到一道題目 100!結果數值中末尾有幾個0?分析 計算100!會溢位,所以使用將10分拆為10 2x5,在1 100中,尋找2的個數n 比如,4有兩個2 以及5的個數m,結果 x m n n m 圖表分析 現在只分析5,1,2,3,4,5,6,25,100 除以5後為 0,0,0,...