CSES - Aalto Competitive Programming 2024 - wk11 - Mon - Results
Submission details
Task:Bus tours
Sender:fabiank
Submission time:2024-11-18 16:55:32 +0200
Language:C++ (C++17)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.00 sdetails
#4ACCEPTED0.00 sdetails
#5ACCEPTED0.00 sdetails
#6ACCEPTED0.00 sdetails
#7ACCEPTED0.00 sdetails
#8ACCEPTED0.00 sdetails
#9ACCEPTED0.00 sdetails
#10ACCEPTED0.00 sdetails
#11ACCEPTED0.00 sdetails
#12ACCEPTED0.00 sdetails
#13ACCEPTED0.00 sdetails
#14ACCEPTED0.00 sdetails
#15ACCEPTED0.00 sdetails
#16ACCEPTED0.01 sdetails
#17ACCEPTED0.00 sdetails
#18ACCEPTED0.00 sdetails
#19ACCEPTED0.00 sdetails
#20ACCEPTED0.00 sdetails
#21ACCEPTED0.00 sdetails
#22ACCEPTED0.01 sdetails
#23ACCEPTED0.01 sdetails
#24ACCEPTED0.01 sdetails
#25ACCEPTED0.01 sdetails
#26ACCEPTED0.01 sdetails
#27ACCEPTED0.01 sdetails
#28ACCEPTED0.01 sdetails
#29ACCEPTED0.01 sdetails
#30ACCEPTED0.01 sdetails
#31ACCEPTED0.01 sdetails
#32ACCEPTED0.01 sdetails
#33ACCEPTED0.01 sdetails
#34ACCEPTED0.01 sdetails
#35ACCEPTED0.01 sdetails
#36ACCEPTED0.01 sdetails
#37ACCEPTED0.01 sdetails
#38ACCEPTED0.12 sdetails
#39ACCEPTED0.01 sdetails
#40ACCEPTED0.12 sdetails
#41ACCEPTED0.01 sdetails
#42ACCEPTED0.01 sdetails
#43ACCEPTED0.01 sdetails
#44ACCEPTED0.01 sdetails
#45ACCEPTED0.01 sdetails
#46ACCEPTED0.01 sdetails
#47ACCEPTED0.01 sdetails
#48ACCEPTED0.01 sdetails
#49ACCEPTED0.01 sdetails
#50ACCEPTED0.12 sdetails
#51ACCEPTED0.01 sdetails
#52ACCEPTED0.12 sdetails
#53ACCEPTED0.01 sdetails
#54ACCEPTED0.01 sdetails
#55ACCEPTED0.01 sdetails
#56ACCEPTED0.01 sdetails
#57ACCEPTED0.01 sdetails
#58ACCEPTED0.01 sdetails
#59ACCEPTED0.01 sdetails
#60ACCEPTED0.01 sdetails

Code

#include <bits/stdc++.h>

#define REP(i, a, b) for (int i = a; i < b; i++)

// Type Aliases for 1D and 2D vectors with initialization
#define vll(n, val)  \
  vector<long long>( \
      n, val)  // 1D vector of long longs with size n, initialized to val
#define ll long long
#define vvi(n, m, val) \
  vector<vector<int>>( \
      n,               \
      vector<int>(m, val))  // 2D vector of ints (n x m), initialized to val
#define vvll(n, m, val)      \
  vector<vector<long long>>( \
      n, vector<long long>(  \
             m, val))  // 2D vector of long longs (n x m), initialized to val

using namespace std;

void print_vector(vector<int> &x) {
  for (int v : x) {
    cout << v << " ";
  }
  cout << "\n";
}

void print_matrix(vector<vector<int>> &matrix) {
  cout << "\n"
       << "----------------" << "\n";
  for (vector<int> row : matrix) {
    print_vector(row);
  }
  cout << "\n"
       << "----------------" << "\n";
}

int modpow(int x, int n, int m) {
  if (n == 0) return 1 % m;
  long long u = modpow(x, n / 2, m);
  u = (u * u) % m;
  if (n % 2 == 1) u = (u * x) % m;
  return u;
}

vector<int> factors(int n) {
  vector<int> f;
  for (int x = 2; x * x <= n; x++) {
    while (n % x == 0) {
      f.push_back(x);
      n /= x;
    }
  }
  if (n > 1) f.push_back(n);
  return f;
}

int euler_totient(int n) {
  vector<int> prime_factors = factors(n);
  // print_vector(prime_factors);
  int result = 1;
  int last_factor = 2;
  int last_factor_count = 0;
  for (int factor : prime_factors) {
    if (factor == last_factor) {
      last_factor_count++;
    } else {
      result *= (last_factor - 1);
      for (int i = 1; i < last_factor_count; i++) {
        result *= last_factor;
      }
      last_factor = factor;
      last_factor_count = 1;
    }
  }
  result *= (last_factor - 1);
  for (int i = 1; i < last_factor_count; i++) {
    result *= last_factor;
  }
  return result;
}

ll gcd(ll a, ll b) {
  if (b == 0) {
    return a;
  }
  return gcd(b, a % b);
}

ll lcd(long a, long b) {
  ll g = gcd(a, b);
  return a * b / g;
}

int main() {
  int n, q;

  cin >> n >> q;

  vector<int> a(q);
  vector<int> b(q);

  for (int i = 0; i < q; i++) {
    cin >> a[i] >> b[i];
  }

  for (int i = 0; i < q; i++) {
    cout << lcd(a[i], n) / a[i] << "\n";
  }
}

Test details

Test 1

Verdict: ACCEPTED

input
1 2
1 1
1 1

correct output
1
1

user output
1
1

Test 2

Verdict: ACCEPTED

input
2 4
1 2
2 2
1 1
1 2

correct output
2
1
2
2

user output
2
1
2
2

Test 3

Verdict: ACCEPTED

input
3 6
2 1
1 3
2 3
2 2
...

correct output
3
3
3
3
3
...

user output
3
3
3
3
3
...

Test 4

Verdict: ACCEPTED

input
4 8
3 1
3 4
2 1
3 3
...

correct output
4
4
2
4
1
...

user output
4
4
2
4
1
...

Test 5

Verdict: ACCEPTED

input
5 10
5 5
3 1
5 5
4 4
...

correct output
1
5
1
5
5
...

user output
1
5
1
5
5
...

Test 6

Verdict: ACCEPTED

input
6 12
2 1
6 5
2 3
6 6
...

correct output
3
1
3
1
2
...

user output
3
1
3
1
2
...

Test 7

Verdict: ACCEPTED

input
7 14
7 7
3 2
6 1
1 3
...

correct output
1
7
7
7
7
...

user output
1
7
7
7
7
...

Test 8

Verdict: ACCEPTED

input
8 16
1 2
7 3
4 8
6 4
...

correct output
8
8
2
4
1
...

user output
8
8
2
4
1
...

Test 9

Verdict: ACCEPTED

input
9 18
8 1
9 3
8 4
5 8
...

correct output
9
1
9
9
3
...

user output
9
1
9
9
3
...

Test 10

Verdict: ACCEPTED

input
10 20
1 4
6 5
5 1
2 4
...

correct output
10
5
2
5
5
...

user output
10
5
2
5
5
...

Test 11

Verdict: ACCEPTED

input
1 2
1 1
1 1

correct output
1
1

user output
1
1

Test 12

Verdict: ACCEPTED

input
2 4
1 1
1 2
1 1
2 2

correct output
2
2
2
1

user output
2
2
2
1

Test 13

Verdict: ACCEPTED

input
3 6
1 2
3 3
1 1
2 3
...

correct output
3
1
3
3
3
...

user output
3
1
3
3
3
...

Test 14

Verdict: ACCEPTED

input
4 8
4 3
1 4
4 4
4 1
...

correct output
1
4
1
1
1
...

user output
1
4
1
1
1
...

Test 15

Verdict: ACCEPTED

input
5 10
3 5
4 4
5 2
1 1
...

correct output
5
5
1
5
5
...

user output
5
5
1
5
5
...

Test 16

Verdict: ACCEPTED

input
6 12
6 5
2 4
1 1
3 5
...

correct output
1
3
6
2
3
...

user output
1
3
6
2
3
...

Test 17

Verdict: ACCEPTED

input
7 14
2 3
4 1
4 3
1 1
...

correct output
7
7
7
7
7
...

user output
7
7
7
7
7
...

Test 18

Verdict: ACCEPTED

input
8 16
3 2
5 7
2 8
1 7
...

correct output
8
8
4
8
8
...

user output
8
8
4
8
8
...

Test 19

Verdict: ACCEPTED

input
9 18
6 1
5 4
8 3
2 9
...

correct output
3
9
9
9
9
...

user output
3
9
9
9
9
...

Test 20

Verdict: ACCEPTED

input
10 20
1 5
8 5
3 8
2 3
...

correct output
10
5
10
5
5
...

user output
10
5
10
5
5
...

Test 21

Verdict: ACCEPTED

input
100000 1000
54883 59286
71521 84428
60278 85796
54490 84727
...

correct output
100000
100000
50000
10000
100000
...

user output
100000
100000
50000
10000
100000
...
Truncated

Test 22

Verdict: ACCEPTED

input
2000000 1000
834232 1994819
1440974 1865535
229 256307
604802 1998532
...

correct output
250000
1000000
2000000
1000000
1000000
...

user output
250000
1000000
2000000
1000000
1000000
...
Truncated

Test 23

Verdict: ACCEPTED

input
30000000 1000
13094992 5558892
778688 27978585
16508968 28464840
13074794 14559312
...

correct output
1875000
468750
3750000
15000000
30000000
...

user output
1875000
468750
3750000
15000000
30000000
...
Truncated

Test 24

Verdict: ACCEPTED

input
400000000 1000
236565899 30376105
304147174 360755367
124942637 52110229
219398785 244517353
...

correct output
400000000
200000000
400000000
80000000
400000000
...

user output
400000000
200000000
400000000
80000000
400000000
...
Truncated

Test 25

Verdict: ACCEPTED

input
500000000 1000
483517462 293793079
92715097 459357998
383763915 326973498
374590311 320810546
...

correct output
250000000
500000000
100000000
500000000
62500000
...

user output
250000000
500000000
100000000
500000000
62500000
...
Truncated

Test 26

Verdict: ACCEPTED

input
600000000 1000
136207631 33856688
534252396 510075127
126836001 223176868
563629114 299672870
...

correct output
600000000
50000000
200000000
300000000
600000000
...

user output
600000000
50000000
200000000
300000000
600000000
...
Truncated

Test 27

Verdict: ACCEPTED

input
700000000 1000
639134189 678229794
237640401 149898916
587858706 45995240
29847608 264934632
...

correct output
700000000
700000000
350000000
12500000
100000000
...

user output
700000000
700000000
350000000
12500000
100000000
...
Truncated

Test 28

Verdict: ACCEPTED

input
800000000 1000
65548324 195282779
669945145 273995058
376590657 621451858
391344456 264580953
...

correct output
200000000
160000000
800000000
100000000
50000000
...

user output
200000000
160000000
800000000
100000000
50000000
...
Truncated

Test 29

Verdict: ACCEPTED

input
900000000 1000
11934038 257096283
405355767 570001955
876668629 249890139
453495728 12239373
...

correct output
450000000
300000000
900000000
56250000
225000000
...

user output
450000000
300000000
900000000
56250000
225000000
...
Truncated

Test 30

Verdict: ACCEPTED

input
1000000000 1000
11139168 391337048
538883744 535937150
532332526 8099343
143698367 339543270
...

correct output
31250000
31250000
500000000
1000000000
31250000
...

user output
31250000
31250000
500000000
1000000000
31250000
...
Truncated

Test 31

Verdict: ACCEPTED

input
636562060 1000
511952489 604348961
431474828 614141397
390042572 606486418
303263917 446364281
...

correct output
636562060
159140515
159140515
20534260
636562060
...

user output
636562060
159140515
159140515
20534260
636562060
...
Truncated

Test 32

Verdict: ACCEPTED

input
773442532 1000
98253 110058063
259701699 126062352
202798887 79318250
340660250 159996304
...

correct output
773442532
773442532
773442532
386721266
773442532
...

user output
773442532
773442532
773442532
386721266
773442532
...
Truncated

Test 33

Verdict: ACCEPTED

input
198730372 1000
5302491 190520836
112418208 193832000
89033117 99141977
85974570 65556834
...

correct output
198730372
49682593
198730372
99365186
99365186
...

user output
198730372
49682593
198730372
99365186
99365186
...
Truncated

Test 34

Verdict: ACCEPTED

input
75940263 1000
54311996 64420602
22311186 9305398
39178355 43663813
68485322 33520835
...

correct output
397593
25313421
75940263
75940263
75940263
...

user output
397593
25313421
75940263
75940263
75940263
...
Truncated

Test 35

Verdict: ACCEPTED

input
967034924 1000
587586158 185430194
918715995 767527830
653946995 749180621
641621091 232024335
...

correct output
483517462
967034924
967034924
967034924
241758731
...

user output
483517462
967034924
967034924
967034924
241758731
...
Truncated

Test 36

Verdict: ACCEPTED

input
59249204 1000
51941206 49590638
12331278 21697751
54797275 58426170
29134863 5358034
...

correct output
29624602
29624602
59249204
59249204
59249204
...

user output
29624602
29624602
59249204
59249204
59249204
...
Truncated

Test 37

Verdict: ACCEPTED

input
356460601 1000
74949458 293929353
22997620 14923804
132467316 38531826
352555547 212977432
...

correct output
356460601
356460601
356460601
356460601
356460601
...

user output
356460601
356460601
356460601
356460601
356460601
...
Truncated

Test 38

Verdict: ACCEPTED

input
244103474 100000
197042690 80586782
110761958 182779959
115101311 77817928
136048363 66665685
...

correct output
122051737
122051737
244103474
244103474
122051737
...

user output
122051737
122051737
244103474
244103474
122051737
...
Truncated

Test 39

Verdict: ACCEPTED

input
11934038 1000
11587328 2864583
10398781 4516499
6350997 9767896
2784292 5052878
...

correct output
5967019
11934038
11934038
5967019
5967019
...

user output
5967019
11934038
11934038
5967019
5967019
...
Truncated

Test 40

Verdict: ACCEPTED

input
391337048 100000
215553498 214374860
212933011 3239737
57479347 135817308
61036250 5721761
...

correct output
195668524
391337048
391337048
195668524
97834262
...

user output
195668524
391337048
391337048
195668524
97834262
...
Truncated

Test 41

Verdict: ACCEPTED

input
320792352 1000
6856072 163403660
209346034 146364209
247391400 274848623
164697794 192719062
...

correct output
40099044
160396176
703492
160396176
106930784
...

user output
40099044
160396176
703492
160396176
106930784
...
Truncated

Test 42

Verdict: ACCEPTED

input
73343920 1000
1442165 49223311
34301870 14374488
53682199 68592328
31116565 7788343
...

correct output
14668784
7334392
73343920
14668784
73343920
...

user output
14668784
7334392
73343920
14668784
73343920
...
Truncated

Test 43

Verdict: ACCEPTED

input
479126951 1000
397311153 468896160
141366175 46404049
286549153 388480761
7824874 188161591
...

correct output
479126951
479126951
479126951
479126951
479126951
...

user output
479126951
479126951
479126951
479126951
479126951
...
Truncated

Test 44

Verdict: ACCEPTED

input
652127789 1000
170038626 615206830
590041554 639221905
128243055 543015584
324591612 538060272
...

correct output
652127789
652127789
652127789
652127789
652127789
...

user output
652127789
652127789
652127789
652127789
652127789
...
Truncated

Test 45

Verdict: ACCEPTED

input
989875543 1000
830179652 707687014
934614610 393292735
8640346 159993019
332576424 216128931
...

correct output
989875543
989875543
989875543
989875543
989875543
...

user output
989875543
989875543
989875543
989875543
989875543
...
Truncated

Test 46

Verdict: ACCEPTED

input
873575358 1000
192088036 634962594
58372062 119170657
388198952 295709490
569083414 26793118
...

correct output
436787679
145595893
436787679
10157853
145595893
...

user output
436787679
145595893
436787679
10157853
145595893
...
Truncated

Test 47

Verdict: ACCEPTED

input
350744380 1000
187247456 19931185
197103729 110458251
16321574 49819680
129109880 252137537
...

correct output
87686095
350744380
175372190
17537219
17537219
...

user output
87686095
350744380
175372190
17537219
17537219
...
Truncated

Test 48

Verdict: ACCEPTED

input
195182397 1000
103584216 164816216
37389796 173529335
13255901 157512328
153639856 80086158
...

correct output
65060799
195182397
195182397
195182397
65060799
...

user output
65060799
195182397
195182397
195182397
65060799
...
Truncated

Test 49

Verdict: ACCEPTED

input
81615941 1000
41748187 35732930
72568551 20198635
15019189 75027737
70390638 16847208
...

correct output
81615941
7419631
81615941
81615941
81615941
...

user output
81615941
7419631
81615941
81615941
81615941
...
Truncated

Test 50

Verdict: ACCEPTED

input
462211740 100000
363282517 196968602
117843390 341358936
65919011 123064016
158172463 322424470
...

correct output
462211740
5135686
462211740
462211740
231105870
...

user output
462211740
5135686
462211740
462211740
231105870
...
Truncated

Test 51

Verdict: ACCEPTED

input
952851063 1000
875998819 667318630
38536147 687576518
742769042 406605561
722483998 556746891
...

correct output
952851063
952851063
952851063
952851063
952851063
...

user output
952851063
952851063
952851063
952851063
952851063
...
Truncated

Test 52

Verdict: ACCEPTED

input
858211636 100000
248343308 583979982
619305380 31050621
18568217 817417300
176886310 599296532
...

correct output
214552909
214552909
858211636
429105818
858211636
...

user output
214552909
214552909
858211636
429105818
858211636
...
Truncated

Test 53

Verdict: ACCEPTED

input
753727010 1000
413760880 627500429
361239419 547590421
738031717 670044259
147026654 727317481
...

correct output
75372701
753727010
753727010
376863505
753727010
...

user output
75372701
753727010
753727010
376863505
753727010
...
Truncated

Test 54

Verdict: ACCEPTED

input
718437562 1000
158903900 657524927
671457583 242576186
492983549 189876521
379600966 589460284
...

correct output
359218781
718437562
718437562
359218781
359218781
...

user output
359218781
718437562
718437562
359218781
359218781
...
Truncated

Test 55

Verdict: ACCEPTED

input
316145889 1000
231106260 17462220
104892428 72706295
119286558 168170985
244430219 260070478
...

correct output
105381963
316145889
35127321
316145889
105381963
...

user output
105381963
316145889
35127321
316145889
105381963
...
Truncated

Test 56

Verdict: ACCEPTED

input
747395152 1000
500172076 372158084
239520832 84889368
159696538 155327109
353132323 129379927
...

correct output
186848788
46712197
373697576
747395152
46712197
...

user output
186848788
46712197
373697576
747395152
46712197
...
Truncated

Test 57

Verdict: ACCEPTED

input
765697360 1000
446153883 253331338
659962663 480469218
677935454 85332598
747807123 93200007
...

correct output
765697360
765697360
382848680
765697360
382848680
...

user output
765697360
765697360
382848680
765697360
382848680
...
Truncated

Test 58

Verdict: ACCEPTED

input
516256687 1000
437326314 491194180
394813416 251232863
466005669 206474116
205825988 157757970
...

correct output
516256687
516256687
516256687
516256687
516256687
...

user output
516256687
516256687
516256687
516256687
516256687
...
Truncated

Test 59

Verdict: ACCEPTED

input
183419903 1000
104804598 53787839
23336070 30671162
74245488 74147577
145899705 58594803
...

correct output
183419903
183419903
183419903
183419903
183419903
...

user output
183419903
183419903
183419903
183419903
183419903
...
Truncated

Test 60

Verdict: ACCEPTED

input
859561821 1000
305915452 372050560
78658441 819519705
526436955 486103389
357871847 582286838
...

correct output
859561821
859561821
31835623
859561821
859561821
...

user output
859561821
859561821
31835623
859561821
859561821
...
Truncated