【数学题/化简分数】HDU 4139
2012-02-28 12:45
309 查看
简单的数学题,化简分数,做法是分别记录分子和分母的素因子个数,分子的加1,分母的加-1,这样最后个数为0的就代表已经约去,有个小优化,找一个数的素因子的时候用上,快了300ms....Orz,具体看代码
#define N 1000005 int max(int a,int b){return a>b?a:b;} LL cnt ; void gao(int n,int p){ int i; int a=1; for(i=2;i*i<=n;i+=a,a=2){//加一个小优化,可以省下300ms,因为素因子中除了2,3相差1之外其它都至少相差2 if(n%i==0){ while(n%i==0){ cnt[i] += p; n/=i; } } } if(n>1)cnt += p; } int main(){ int t; scanf("%d",&t); int ca=1; while(t--){ int n,m; scanf("%d%d",&n,&m); int i,j; int a,b; memset(cnt,0,sizeof(cnt)); int maxm = 0; for(i=0;i<n;i++){ scanf("%d",&a); maxm = max(a,maxm); gao(a,1); } for(j=0;j<m;j++){ scanf("%d",&b); maxm = max(b,maxm); gao(b,-1); } int x = 1,y = 1; for(i=2;i<=maxm;i++){ if(cnt[i] > 0){ while(cnt[i]--){ x *= i; } } else if(cnt[i]<0){ while(cnt[i]++){ y *= i; } } } printf("Case #%d: %d / %d\n",ca++,x,y); } return 0; }
相关文章推荐
- HDU 4565 So Easy! 数学 + 矩阵 + 整体思路化简
- HDU 1717 小数化分数2(数学基本知识)
- HDU 1717 小数化分数2 数学题
- OJ_1186数学公式【在化简分数时调用函数进行化简】【简便方法】
- hdu 1717 小数化分数2(数学)
- hdu5073 数学化简
- hdu 1717 小数化分数2 (数学)
- 【HDU 2225】【数学题 构造】【求不大于sqrt(n)的分数, 分母最大为m】
- hdu 1717 小数化分数2(数学)
- hdu 5734 Acperience(2016 Multi-University Training Contest 2——化简公式,数学推导)
- HDU 1717 小数化分数2(数学)
- HDU 1717 小数化分数2【数学】
- Play the Dice hdu 4586 数学期望的问题
- HDU 1717 小数化分数2
- hdu 1717 小数化分数2 (循环小数转分数)
- HDU 1279 验证角谷猜想(数学)
- 【HDU 5729】Rigid Frameworks(组合数学+DP)
- HDU 4430 A very hard Aoshu problem DFS 数学式子
- HDU 1418 抱歉【数学题】
- HDU - 5974 A Simple Math Problem(ICPC2016 大连现场,简单的数学推理)