模數迴圈節

2022-09-06 22:54:29 字數 1289 閱讀 8753

題意:給出n個數ai , 模數m 。 計算 ∏1≤

in|ai

−aj|

'>∏1<=i<=j<=n|a[i] - a[j]|mod m∏1

≤in|ai

−aj|

'>2 <= n <= 2e5 , 1 <= m <= 1000.∏1

≤in|ai

−aj|

'>解法:直接暴力n方必超時。分析發現當n>m時,根據迴圈節性質必有兩個數(a[i] - a[j])%mod = 0 , 所以特判一下,時間複雜度∏1

≤in|ai

−aj|

'>就為m方。

//#include#include #include #include #include #include #include #include #include #include #include #include #include #include typedef long long ll ;

#define int ll

#define mod 1000000007

#define gcd __gcd

#define rep(i , j , n) for(int i = j ; i <= n ; i++)

#define red(i , n , j) for(int i = n ; i >= j ; i--)

#define me(x , y) memset(x , y , sizeof(x))

//ll lcm(ll a , ll b)

ll quickpow(ll a , ll b)return ans;}

//int euler1(int x)if(x>1)ans-=ans/x;return ans;}

//const int n = 1e7+9; int vis[n],prime[n],phi[n];int euler2(int n)for(int j=1;j#define fi first

#define se second

#define lson l,mid,root<<1

#define rson mid+1,r,root<<1|1

using namespace std;

const int n = 1e6+100;

const int maxn = 2e5+9;

int a[maxn];

void solve()

if(n > m)else

}cout << ans%m << endl;

} }

signed main()

}

迴圈節長度以及迴圈節

迴圈節長度 兩個整數做除法,有時會產生迴圈小數,其迴圈部分稱為 迴圈節。比如,11 13 6 0.846153846153 其迴圈節為 846153 共有6位。這是一道藍橋杯的題目,試卷上是乙個填空題,思路就是不斷的對除數取餘,然後乘10後再取餘,直到餘數在之前出現過或者為0 結束。為什麼是這樣的呢...

最長迴圈節

1035 最長的迴圈節 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 正整數k的倒數1 k,寫為10進製的小數如果為無限迴圈小數,則存在乙個迴圈節,求 n的數中,倒數迴圈節長度最長的那個數,假如存在多個最優的答案,輸出所有答案中最大的那個數。1 6 0.1 6 ...

迴圈節長度

兩個整數做除法,有時會產生迴圈小數,其迴圈部分稱為 迴圈節。比如,11 13 6 0.846153846153 其迴圈節為 846153 共有6位。下面的方法,可以求出迴圈節的長度。請仔細閱讀 並填寫劃線部分缺少的 public static int f int n,int m 注意,只能填寫缺少的...