Logo Wy Online Judge

WyOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#803#117. 【0621 模拟赛】TROKUTIhandezheng100434ms6984kbC++141.3kb2025-06-23 07:35:362025-06-23 07:35:38

answer

#include<bits/stdc++.h>
#include<set>
#include<map>
#define int long long
#define db long double
#define pii pair<int,int>
#define fi first
#define se second
#define F(i,l,r) for(int i=(l); i<=(r); i++)
using namespace std;
const int N= 3e5 +50, M= 1e3 +50;
const int INF=0x3f3f3f3f3f3f3f3f, mod=1e9+7;
const int eps = 1e-7;

int n;
int a,b,c;
int fac[N],inv[N],ifac[N];
set<int> st;
map<pii,int> mp;

inline void init(){
	fac[0]=fac[1]=inv[0]=inv[1]=ifac[0]=ifac[1]=1;
	F(i,2,3e5){
		fac[i] = fac[i-1]*i%mod;
		inv[i] = (mod-mod/i)*inv[mod%i]%mod;
		ifac[i] = ifac[i-1]*inv[i];
	}
}
inline int fpm(int x,int p){
	int res=1;
	for(; p; p>>=1, x=x*x%mod) if(p&1) res=res*x%mod;
	return res;
}

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	
	cin>>n;
	F(i,1,n){
		cin>>a>>b>>c;
//		cout<<a<<' '<<b<<' '<<c<<'\n';
		int t = __gcd(abs(a),abs(b));
//		cout<<t<<'\n';
		st.insert(t);
		mp[{a/t,b/t}]++;
	}
	int cnt=0,res=0;
	for(auto e:mp){
		res = (res + cnt*e.se) % mod;
		cnt = (cnt+e.se)%mod;
	}
	int ans = 0;
//	cout<<res<<'\n';
	for(auto e:mp){
//		cout<<e.se<<' ';
		int t = ((res - (n-e.se)*e.se%mod)%mod + mod) % mod;
		ans = (ans + t*e.se) % mod;
	}
	cout<<ans * fpm(3,mod-2) % mod<<'\n';
//	cout<<st.size()<<'\n';
//	cout<<*st.begin()<<' '<<*st.rbegin()<<'\n';

	return 0;
}

详细

小提示:点击横条可展开更详细的信息

Subtask #1:

score: 10
Accepted

Test #1:

score: 10
Accepted
time: 0ms
memory: 3412kb

input:

500
73102 49767 81374
73102 49767 92538
73102 49767 13140
73102 49767 24384
73102 49767 27887
17295 ...

output:

20377848

result:

ok "20377848"

Test #2:

score: 0
Accepted
time: 0ms
memory: 3412kb

input:

500
124 63117 7826508
7035 56206 395409210
11693 51548 602750764
9043 54198 490112514
12433 50808 63...

output:

11783400

result:

ok "11783400"

Subtask #2:

score: 10
Accepted

Test #3:

score: 10
Accepted
time: 1ms
memory: 3376kb

input:

500
161481 156950 868380
161481 156950 129078
161481 156950 461965
161481 156950 884496
161481 15695...

output:

20354576

result:

ok "20354576"

Test #4:

score: 0
Accepted
time: 1ms
memory: 3308kb

input:

500
54987 8254 453862698
22821 40420 922424820
55211 8030 443344330
7995 55246 441691770
7536 55705 ...

output:

11783400

result:

ok "11783400"

Subtask #3:

score: 10
Accepted

Test #5:

score: 10
Accepted
time: 0ms
memory: 3192kb

input:

500
1616 7821 6023
1616 7821 1348
1616 7821 1311
1616 7821 8768
1616 7821 3224
1041 342 8905
1041 34...

output:

20376818

result:

ok "20376818"

Test #6:

score: 0
Accepted
time: 0ms
memory: 3460kb

input:

500
28122 35119 987616518
39998 23243 929673514
6803 56438 383947714
10419 52822 550352418
4210 5903...

output:

11783400

result:

ok "11783400"

Subtask #4:

score: 10
Accepted

Test #7:

score: 10
Accepted
time: 4ms
memory: 3448kb

input:

5000
389677 811320 494924
389677 811320 749898
444969 181234 734834
444969 181234 901259
444969 1812...

output:

787588230

result:

ok "787588230"

Test #8:

score: 0
Accepted
time: 2ms
memory: 3416kb

input:

5000
23083 40158 926967114
60406 2835 171251010
24995 38246 955958770
29023 34218 993109014
3991 592...

output:

828333923

result:

ok "828333923"

Subtask #5:

score: 10
Accepted

Test #9:

score: 10
Accepted
time: 4ms
memory: 3424kb

input:

5000
879363 278076 350260
879363 278076 59028
879363 278076 651081
879363 278076 693725
879363 27807...

output:

787932788

result:

ok "787932788"

Test #10:

score: 0
Accepted
time: 1ms
memory: 3428kb

input:

5000
37905 25336 960361080
35770 27471 982637670
52420 10821 567236820
30663 32578 998939214
45883 1...

output:

828333923

result:

ok "828333923"

Subtask #6:

score: 10
Accepted

Test #11:

score: 10
Accepted
time: 4ms
memory: 3364kb

input:

5000
723822 556273 863546
723822 556273 609176
150507 44473 252270
150507 44473 584705
478150 568821...

output:

787762934

result:

ok "787762934"

Test #12:

score: 0
Accepted
time: 2ms
memory: 3420kb

input:

5000
39891 23350 931454850
16346 46895 766545670
33352 29889 996857928
11336 51905 588395080
43183 2...

output:

828333923

result:

ok "828333923"

Subtask #7:

score: 10
Accepted

Test #13:

score: 10
Accepted
time: 9ms
memory: 3640kb

input:

10000
393478769 738556203 6827952
393478769 738556203 523642363
393478769 738556203 876852848
393478...

output:

484345046

result:

ok "484345046"

Test #14:

score: 0
Accepted
time: 129ms
memory: 6984kb

input:

300000
31401 31840 999807840
54120 9121 493628520
46872 16369 767247768
60349 2892 174529308
31055 3...

output:

990696070

result:

ok "990696070"

Subtask #8:

score: 10
Accepted

Test #15:

score: 10
Accepted
time: 7ms
memory: 3432kb

input:

10000
43150731 562981536 60415743
43150731 562981536 458963024
43150731 562981536 368003258
43150731...

output:

483275456

result:

ok "483275456"

Test #16:

score: 0
Accepted
time: 101ms
memory: 6888kb

input:

210000
56426 6815 384543190
17171 46070 791067970
31577 31664 999854128
10214 53027 541617778
27620 ...

output:

695778049

result:

ok "695778049"

Subtask #9:

score: 10
Accepted

Test #17:

score: 10
Accepted
time: 8ms
memory: 3544kb

input:

10000
226922248 948048502 664992202
226922248 948048502 970629073
226922248 948048502 51606080
22692...

output:

481876198

result:

ok "481876198"

Test #18:

score: 0
Accepted
time: 110ms
memory: 6968kb

input:

249243
17136 46105 790055280
49548 13693 678460764
6857 56384 386625088
32641 30600 998814600
26037 ...

output:

916345391

result:

ok "916345391"

Subtask #10:

score: 10
Accepted

Test #19:

score: 10
Accepted
time: 10ms
memory: 3704kb

input:

10000
176721617 620409850 489941614
816064587 763087269 5642316
816064587 763087269 362859512
816064...

output:

482006082

result:

ok "482006082"

Test #20:

score: 0
Accepted
time: 41ms
memory: 5336kb

input:

77777
23811 39430 938867730
5264 57977 305190928
7972 55269 440604468
27186 36055 980191230
29278 33...

output:

815976874

result:

ok "815976874"