码迷,mamicode.com
首页 > 其他好文 > 详细

HDU4497 GCD and LCM 数论 素数分解

时间:2014-07-01 09:06:32      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:blog   数据   2014   os   for   io   

题意很简单首先以前做最简单的LCM跟CGD的时候都知道先求出两个数A,B的最大公约数GCD,那么LCM可以利用  A*B/GCD来求得,这点一开始脑残了没想到,结果没有进行特盘所以错了,意思就是 题目给的L%G不为0的话就是无解,结果我给判其它的去了,肯定漏了些什么没有发现


然后对于 L/G进行素因子分解,同时任意的数都能够通过素因子分解来表示,所以三个解x,y,z也能分解

L/G = p1^q1*p2^q2....

x = p1^i1*...

y = p1^j1*...

z = p1^k1*...

注意分解过后 咱们先忽略指数,保证x,y,z要互质同时这时候 LCM(x,y,z)的值为  L/G,那么我们只看第一个,对于素数p1来说,x,y,z中的p1的指数中肯定有一个为0,并且有另一个为q1,外加题目说打乱顺序的三个数算不同的 所以最后 排列一下就是六种


#include<iostream>
#include<cstdio>
#include<list>
#include<algorithm>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#include<cmath>
#include<memory.h>
#include<set>
#include<cctype>

#define ll long long

#define LL __int64

#define eps 1e-8

#define inf 0xfffffff

//const LL INF = 1LL<<61;

using namespace std;

//vector<pair<int,int> > G;
//typedef pair<int,int > P;
//vector<pair<int,int> > ::iterator iter;
//
//map<ll,int >mp;
//map<ll,int >::iterator p;


#define N 100009

int prime[N];
bool isprime[N];
int k = 0;

void init()//依据题目数据范围处理一定范围内的素数
{
	memset(isprime,false,sizeof(isprime));
	for(int i=2;i<100009;i++)
		if(!isprime[i])
			for(int j=i*2;j<100009;j+=i)
				isprime[j]=true;
	k = 0;
	for(int i=2;i<100009;i++)
		if(!isprime[i])
			prime[k++]=i;
}

int main() {
	init();
	int G,L;
	int t;
	scanf("%d",&t);
	while(t--) {
		scanf("%d %d",&G,&L);
		if(L%G) {
			puts("0");//L肯定得是G的倍数,否则不存在答案,
			continue;
		}
		int tmp = L/G;
		int now = tmp;
		int ans = 1;
		for(int i=0;i<k;i++) {
			if(prime[i] * prime[i] > tmp)break;
			if(now%prime[i] == 0) {
				int cnt = 0;
				while(now%prime[i] == 0) {
					now /= prime[i];
					cnt++;
				}
				ans *= cnt * 6;
			}
		}
		if(now != 1) ans *= 6;
		printf("%d\n",ans);
	}
	return 0;
}


HDU4497 GCD and LCM 数论 素数分解,布布扣,bubuko.com

HDU4497 GCD and LCM 数论 素数分解

标签:blog   数据   2014   os   for   io   

原文地址:http://blog.csdn.net/yitiaodacaidog/article/details/36006173

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!