NEFU119 组合素数【算术基本定理】
2015-02-04 22:31
281 查看
题目链接:
http://acm.nefu.edu.cn/JudgeOnline/problemshow.php?problem_id=119
题目大意:
给你两个整数N和P,求出C(2*N,N)被素数p整数的次数。
思路:
由算术基本定理的性质(5)可得到N!被素数P整除的次数。
来看这道题,C(2*N,N) = (2*N)! / (N! * N!)。最终结果就是从(2*N)!能被素数P整除的
次数里边减去N!能被素数整除的次数*2。最终结果为:
[2*N/P] + [2*N/P^2] + … + [2*N/P^t] - 2*([N/P] + [N/P^2] + … + [N/P^t])。
其中次数t = logP(2*N),即log10(2*N) / log10(P)。
AC代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
int T, N, P, tag, sum;
cin >> T;
while(T--)
{
cin >> N >> P;
sum = 0;
double s = 0.0;
s = ( log10(N*2.0)/log10(P*1.0) );
tag = 1;
for(int i = 1; i <= (int)s; ++i)
{
tag *= P;
sum += (int)(2*N/tag) - 2*(int)(N/tag);
}
cout << sum << endl;
}
return 0;
}
http://acm.nefu.edu.cn/JudgeOnline/problemshow.php?problem_id=119
题目大意:
给你两个整数N和P,求出C(2*N,N)被素数p整数的次数。
思路:
由算术基本定理的性质(5)可得到N!被素数P整除的次数。
来看这道题,C(2*N,N) = (2*N)! / (N! * N!)。最终结果就是从(2*N)!能被素数P整除的
次数里边减去N!能被素数整除的次数*2。最终结果为:
[2*N/P] + [2*N/P^2] + … + [2*N/P^t] - 2*([N/P] + [N/P^2] + … + [N/P^t])。
其中次数t = logP(2*N),即log10(2*N) / log10(P)。
AC代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
int T, N, P, tag, sum;
cin >> T;
while(T--)
{
cin >> N >> P;
sum = 0;
double s = 0.0;
s = ( log10(N*2.0)/log10(P*1.0) );
tag = 1;
for(int i = 1; i <= (int)s; ++i)
{
tag *= P;
sum += (int)(2*N/tag) - 2*(int)(N/tag);
}
cout << sum << endl;
}
return 0;
}
相关文章推荐
- nefu119 组合素数 算术基本定理的应用
- nefu 118 119(算术基本定理的应用)
- 素因子分解:nefu118(n!后面有多少个0)+ nefu119 (组合素数)
- NEFU118 n!后面有多少个0【算术基本定理】
- [NEFU119] 组合素数
- nefu118 n!后面有多少个0 算术基本定理的应用
- 【Eternallyc】NEFU-119-组合素数
- HDU 4497 GCD and LCM (素数筛选+算术基本定理)
- Nefu 118 n!后面有多少个0【算术基本定理应用】n!素因子幂次
- nefu 118 n!后面有多少个0 算数基本定理,素数分解
- NEFU 119 组合素数 (n!素因数p的幂的求法)
- NEFU 119 组合素数
- nefu119组合素数
- NEFU 119 组合素数(数论)
- NEFU119 组合素数
- nefu 119 组合素数
- NEFU 119 组合素数
- nefu 119——组合素数
- nefu 119 组合素数
- nefu 118 n!后面有多少个0 算数基本定理,素数分解