給N個升序的數字,要求找出一個子串,每相鄰兩個數字不互質,求最長串的長度
提示
1)dp[i]表示到第i個數字的最長串
2)dp[i]用前i-1項中與第i項不互質的最大項更新
3)尋找與第i項不互質,即找與第i項有公公因數,所以建立數組dig[i]表示該因數出現的次數
#include#include #define maxn 100005 int dp[maxn]; int dig[maxn]; int mark[maxn]; int gcd(int a,int b) { int k; while(b!=0) { k=a%b; a=b; b=k; } return a; } int max(int a,int b) { return a