時間限制: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,...