1. 程式人生 > >【CZY選講·次大公因數】

【CZY選講·次大公因數】

name pre 範圍 true ret als string lba 流浪

題目描述?

給定n個數ai,求sgcd(a1,a1),sgcd(a1,a2),…,sgcd(a1,an)。?

其中sgcd(x,y)表示x和y的次大公因數。若不存在次大公因數,sgcd(x,y)=-1。?

數據範圍

n<=10^5,ai<=10^12。

題解:

①關鍵在於快速求出次大公因數。

②次大公因數sgcd=gcd/p p為gcd的最小質因子

③由於每次運算都與a1有關,因此先將a1進行素數分解,得出gcd後枚舉a1素因子找到最小的能夠整除gcd的即可

#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<math.h>
#include<cstring>
#define go(i,a,b) for(int i=a;i<=b;i++)
#define ro(i,a,b) for(int i=a;i>=b;i--)
#define fo(i,a,x) for(int i=a[x],v=e[i].v;i;i=e[i].next,v=e[i].v)
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;

int main()
{
    //又是一道口糊的題? 
	return 0;
}//czy020202

如今兒時的街道,變成鋼筋水泥的欲望叢林。

只有孤獨的你我,伴著奇幻壯麗的曠世仿徨…… ————汪峰《流浪》

【CZY選講·次大公因數】