UVa10780 - Again Prime?No time.(质因数分解)
2017-10-25 10:57
309 查看
简介:
给出m,n,求最大正整数使得m^k是n!的约数
分析:
一开始看题有点懵
n的范围蛮大的,所以就没有忘质因数分解上想
后来发现n!的质因数分解复杂度只有O(nsqrt(n)),可以承受
这样问题就可以解决了
我们把n!和m分别质因数分解,记录每一个质因子的次数
之后循环所有质因子,维护Kn/Km的最小值即可
无解的情况:
n=0&&m!=0
最小值是0或inf
m质因子p,而n没有
给出m,n,求最大正整数使得m^k是n!的约数
分析:
一开始看题有点懵
n的范围蛮大的,所以就没有忘质因数分解上想
后来发现n!的质因数分解复杂度只有O(nsqrt(n)),可以承受
这样问题就可以解决了
我们把n!和m分别质因数分解,记录每一个质因子的次数
之后循环所有质因子,维护Kn/Km的最小值即可
无解的情况:
n=0&&m!=0
最小值是0或inf
m质因子p,而n没有
tip
注意在处理除法的时候,不要让除数为0//这里写代码片 #include<cstdio> #include<cstring> #include<iostream> using namespace std; const int INF=1e9; int sshu[5000],tot=0; bool no[10002]; int num1[5000],num2[5000]; void prime() { memset(no,0,sizeof(no)); for (int i=2;i<=10000;i++) { if (!no[i]) sshu[++tot]=i; for (int j=1;j<=tot&&sshu[j]*i<=10000;j++) { no[sshu[j]*i]=1; if (i%sshu[j]==0) break; } } } int main() { prime(); int n,m; int T; scanf("%d",&T); for (int cas=1;cas<=T;cas++) { scanf("%d%d",&m,&n); printf("Case %d:\n", cas); if (m==0&&n!=0) { printf("Impossible to divide\n"); } memset(num1,0,sizeof(num1)); for (int i=2;i<=n;i++) { int k=i; for (int j=1;j<=tot&&sshu[j]<=k;j++) while (k%sshu[j]==0) { num1[j]++; k/=sshu[j]; } } memset(num2,0,sizeof(num2)); for (int i=1;i<=tot&&sshu[i]<=m;i++) while (m%sshu[i]==0) { num2[i]++; m/=sshu[i]; } int ans=INF; for (int i=1;i<=tot;i++) { if (num1[i]==0&&num2[i]!=0) { ans=0; break; } if (num2[i]==0) continue; ans=min(ans,num1[i]/num2[i]); } if (ans==0||ans==INF) printf("Impossible to divide\n"); else printf("%d\n",ans); } return 0; }
相关文章推荐
- UVa 10780 (质因数分解) Again Prime? No Time.
- UVA 10780 Again Prime? No Time(质因数分解)
- UVa 19780 Again Prime?No time. (质因数分解)
- UVA 10780 Again Prime? No Time. [质因子分解]【数论】
- UVA 10780 Again Prime? No time
- UVA 10780-Again Prime? No Time.
- UVA 10780 Again Prime? No Time.
- UVa 10780 - Again Prime? No time (质因式分解)
- Again Prime? No Time.(UVA 10780)
- [UVa 10780]Again Prime?No time.
- UVA10780 - Again Prime? No Time.(分解质因子)
- uva 10780 Again Prime? No Time. 质因子乱搞
- UVA - 10780 Again Prime? No Time.
- UVa 10780 - Again Prime? No Time.
- uva 10780 - Again Prime? No Time.(数论)
- Uva 10780 Again Prime? No Time.(分解质因子)
- UVA 10780 - Again Prime? No Time.(数论)
- UVa - 10780 - Again Prime? No Time.
- Uva10780 Again Prime? No Time.
- UVA 10780-Again Prime? No Time. (数学-质因子)