#include<algorithm> usingnamespacestd; int a[1000005]; int ans; boolcmp(int x, int y){ return x < y; } int(){ int n; cin >> n; for(int i = 0; i < n; i++){ scanf("%d", &a[i]); } sort(a, a + n, cmp); int k = 0; for(int i = n / 2; i < n; i++){ if(a[i] >= 2 * a[k]){ a[i] = 0; k++; while(a[k] == 0 && k < n){ k++; } ans++; } } cout << n - ans << endl; }
模运算运算法则
基本性质 若p|(a-b),则a≡b (% p)。例如 11 ≡ 4 (% 7), 18 ≡ 4(% 7) (a % p)=(b % p)意味a≡b (% p) 对称性:a≡b (% p)等价于b≡a (% p) 传递性:若a≡b (% p)且b≡c (% p) ,则a≡c (% p) 运算规则 模运算与基本四则运算有些相似,但是除法例外。其规则如下: (a + b) % p = (a % p + b % p) % p (1) (a - b) % p = (a % p - b % p) % p (2) (a b) % p = (a % p b % p) % p (3) a ^ b % p = ((a % p)^b) % p (4) 结合律: ((a + b) % p + c) % p = (a + (b + c) % p) % p (5) ((a b) % p c)% p = (a (b c) % p) % p (6) 交换律: (a + b) % p = (b + a) % p (7) (a b) % p = (b a) % p (8) 分配律: (a + b) % p = ( a % p + b % p ) % p (9) ((a + b) % p c) % p = ((a c) % p + (b c) % p) % p (10) 重要定理 若a≡b (% p),则对于任意的c,都有(a + c) ≡ (b + c) (%p);(11) 若a≡b (% p),则对于任意的c,都有(a c) ≡ (b c) (%p);(12) 若a≡b (% p),c≡d (% p),则 (a + c) ≡ (b + d) (%p),(a - c) ≡ (b - d) (%p), (a c) ≡ (b * d) (%p); (13)
#include<iostream> usingnamespacestd; constlonglong mod = 10086; longlongpow_mod(longlong x, longlong p) { longlong res = 1; while (p) { if (p & 1) { res = res * x % mod; } p >>= 1; x = x * x % mod; } return res; }
int() { longlong ans = 0; longlong tmp = 1e12; for (int i = 1; i <= mod; i++){ ans = (ans + pow_mod(i, 2019)) % mod; } //10086 以内的取模结果 ans = ans * (tmp / mod) % mod; //到1e12共有多少个这样的取模结果(对10086取模相同的数字的最终计算结果也相同,所以直接乘上去即可) tmp %= mod; //最后剩下的那些数字,对10086的取模结果 cout << tmp << endl; for (int i = 1; i <= tmp; i++){ ans = (ans + pow_mod(i, 2019)) % mod; } cout << ans << endl; return0; }
近期评论