2010 Asia Regional Hangzhou Site —— Online Contest
2012-09-05 16:06
309 查看
【题目链接】
HDU3641 Treasure Hunting
对ai进行质因子分解,然后在long long范围内二分找出题目所求最小x。
通过这道题学到了快速求阶乘包含某个因子的个数,下面是简要证明:
出处:/article/5245353.html
给定两个数m,n
求m!分解质因数后因子n的个数。
这道题涉及到了大数问题,如果相乘直接求的话会超出数据类型的范围。
下面给出一种效率比较高的算法,我们一步一步来。
m!=1*2*3*……*(m-2)*(m-1)*m
可以表示成所有和n倍数有关的乘积再乘以其他和n没有关系的
=(n*2n*3n*......*kn)*other other是不含n因子的数的乘积 因为 kn<=m 而k肯定是最大值 所以k=m/n
=n^k*(1*2*......*k)*other
=n^k*k!*other
从这个表达式中可以提取出k个n,然后按照相同的方法循环下去可以求出k!中因子n的个数。
每次求出n的个数的和就是m!中因子n的总个数。
View Code
HDU3641 Treasure Hunting
对ai进行质因子分解,然后在long long范围内二分找出题目所求最小x。
通过这道题学到了快速求阶乘包含某个因子的个数,下面是简要证明:
出处:/article/5245353.html
给定两个数m,n
求m!分解质因数后因子n的个数。
这道题涉及到了大数问题,如果相乘直接求的话会超出数据类型的范围。
下面给出一种效率比较高的算法,我们一步一步来。
m!=1*2*3*……*(m-2)*(m-1)*m
可以表示成所有和n倍数有关的乘积再乘以其他和n没有关系的
=(n*2n*3n*......*kn)*other other是不含n因子的数的乘积 因为 kn<=m 而k肯定是最大值 所以k=m/n
=n^k*(1*2*......*k)*other
=n^k*k!*other
从这个表达式中可以提取出k个n,然后按照相同的方法循环下去可以求出k!中因子n的个数。
每次求出n的个数的和就是m!中因子n的总个数。
View Code
#include <stdio.h> #include <string.h> #include <algorithm> struct expo { int s, t; }e[101]; bool flag[101]; int a; bool cmp(expo a, expo b) { return a.s == b.s ? (a.t < b.t ? 1 : 0): a.s < b.s ; } bool check(int n) { int i; for(i = 0 ; i < n; i ++) if(!flag[i]) break; if(i == n) return true; a = e[i].t; flag[i] = true; return false; } int main() { int n, i, cnt; while(scanf("%d", &n), n) { memset(flag, false, sizeof(flag)); for(i = 0; i < n;i ++) scanf("%d%d", &e[i].s, &e[i].t); std::sort(e, e + n, cmp); cnt = 0; while(!check(n)) { cnt ++; for(i = 1; i < n; i ++) if(!flag[i] && e[i].s > a) flag[i] = true, a = e[i].t; } printf("%d\n", cnt); } return 0; }
相关文章推荐
- hdu 3650 2010 Asia Regional Hangzhou Site —— Online Contest
- hdu 3641 2010 Asia Regional Hangzhou Site —— Online Contest 数论题,分解质因子
- HDU 3689 Infinite monkey theorem(DP+trie+自动机)(2010 Asia Hangzhou Regional Contest)
- 2010 Asia Hangzhou/Fuzhou Regional Contest
- The 37th ACM/ICPC Asia Regional HangZhou Site Online Contest - F
- HDU 3686 Traffic Real Time Query System(双连通分量缩点+LCA)(2010 Asia Hangzhou Regional Contest)
- HDU 4034 Graph The 36th ACM/ICPC Asia Regional Chengdu Site —— Online Contest
- The 35th ACM/ICPC Asia Regional Tianjin Site —— Online Contest
- 2010 Asia Regional Tianjin Site —— Online Contest (线段树二维转一维,2-SAT,floyed变形)hdu3621-3631
- The 35th ACM/ICPC Asia Regional Hangzhou Site —— Online Contest hdu 3646 Fate Stay Night
- 2010 Asia Regional Tianjin Site —— Online Contest hdu 3622 Bomb Game 强连通 two sat
- HDU4023 Game The 36th ACM/ICPC Asia Regional Shanghai Site —— Online Contest
- hdu3652 - B-number(2010 Asia Regional Chengdu Site —— Online Contest )数位dp
- HDU 3685 Rotational Painting(多边形质心+凸包)(2010 Asia Hangzhou Regional Contest)
- The 36th ACM/ICPC Asia Regional Chengdu Site —— Online Contest
- 2013 Asia Hangzhou Regional Contest
- 2012 Asia Hangzhou Regional Contest
- 2012 Asia Hangzhou Regional Contest--hdu4460Friend Chains(SPFA)
- HDU 3729 I'm Telling the Truth(2010 Asia Tianjin Regional Contest )
- 【树状数组】The 36th ACM/ICPC Asia Regional Beijing Site Online Contest - G Panda