題意:給出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 注意,只能填寫缺少的...