【CZY選講·次大公因數】
阿新 • • 發佈:2017-10-12
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選講·次大公因數】