時間限制:
3000 ms | 記憶體限制:
65535 kb
難度:2 描述
給定兩個數m,n,其中m是乙個素數。
將n(0<=n<=10000)的階乘分解質因數,求其中有多少個m。
輸入
第一行是乙個整數s(0
輸出輸出m的個數。
樣例輸入
2100 5
16 2
樣例輸出
2415
題目的意思是:輸入m(素數)和n,求n!分解質因數後m的個數
這裡用到一點數學思維:
n!=1*2*3*……*(m-2)*(m-1)*m
=(m*2m*3m*......*km)*other(other因子不包含m)
=m^k*(1*2*......*k)*other
(k個m相乘)
=m^k*k!*other
如果繼續做下去,發現
k!=1*2*3*……*(m-2)*(m-1)*m
=(m*2m*3m*......*jm)*other(other因子不包含m)
=m^j*(1*2*......*j)*other
(j個m相乘) =
m^j*j!*other
...出現了規律
因為:km<=n!,k一定是k個數中的最大值,k=m/n
同理:jm<=k!,j一定是j個數中的最大值,j=k/n
以此類推。
/*
階乘因式分解
by amily
*/#include int main()
printf("%d\n",sum);
} return 0;
}
階乘因式分解(一)
描述 給定兩個數m,n,其中m是乙個素數。將n 0 n 10000 的階乘分解質因數,求其中有多少個m。輸入 第一行是乙個整數s 0 100 表示測試資料的組數 隨後的s行,每行有兩個整數n,m。輸出 輸出m的個數。樣例輸入 2 100 5 16 2 樣例輸出 24 15 階乘指從1乘以2乘以3乘以...
階乘因式分解(一)
描述 給定兩個數m,n,其中m是乙個素數。將n 0 n 10000 的階乘分解質因數,求其中有多少個m。輸入 第一行是乙個整數s 0 s 100 表示測試資料的組數 隨後的s行,每行有兩個整數n,m。輸出 輸出m的個數。樣例輸入 2 100 5 16 2 樣例輸出 24 15 演算法思路 由於m是乙...
階乘因式分解(一)
時間限制 3000 ms 記憶體限制 65535 kb 難度 2描述 給定兩個數m,n,其中m是乙個素數。將n 0 n 10000 的階乘分解質因數,求其中有多少個m。輸入 第一行是乙個整數s 0 輸出輸出m的個數。樣例輸入 2 100 5 16 2 樣例輸出 24 關鍵 while n 完整 in...