File tree 1 file changed +26
-19
lines changed
1 file changed +26
-19
lines changed Original file line number Diff line number Diff line change @@ -20,32 +20,39 @@ typedef long long ll;
20
20
class TheKingsFactorization {
21
21
public:
22
22
23
- vector<long long > getVector (long long N, vector<long long > primes) {
24
-
23
+ vector<ll > getVector (long long N, vector<long long > primes) {
24
+ int m = primes. size ();
25
25
vector<ll> res;
26
-
27
- for (ll p : primes){
28
- res. push_back (p);
29
- N /= p;
30
- if (N%p == 0 ){
31
- N /= p ;
32
- res. push_back (p);
33
- }
26
+ res. push_back (primes[ 0 ]);
27
+
28
+ if (m == 1 ){
29
+ if (N != primes[ 0 ]){
30
+ res. push_back (N/primes[ 0 ]);
31
+ return res ;
32
+ }
33
+ return res;
34
34
}
35
-
36
- for (int k = 3 ; k <= 1000000 ; k += 2 ){
37
- if (N%k == 0 )
38
- while (N%k == 0 ){
39
- res.push_back (k);
40
- N /= k;
41
- }
35
+ for (int i = 0 ; i+1 < m; i++){
36
+ ll p0 = primes[i], p1 = primes[i+1 ];
37
+ N /= p0;
38
+ for (ll p = p0; p <= p1; p++)
39
+ if (N%p == 0 ){
40
+ res.push_back (p);
41
+ N /= p;
42
+ p = p1+1 ;
43
+ }
44
+ res.push_back (p1);
42
45
}
43
-
46
+
47
+ N /= primes[m-1 ];
48
+
44
49
if (N > 1 ) res.push_back (N);
45
- sort (res. begin (), res. end ());
50
+
46
51
return res;
47
52
}
48
53
54
+
55
+
49
56
// BEGIN CUT HERE
50
57
public:
51
58
void run_test (int Case) { if ((Case == -1 ) || (Case == 0 )) test_case_0 (); if ((Case == -1 ) || (Case == 1 )) test_case_1 (); if ((Case == -1 ) || (Case == 2 )) test_case_2 (); if ((Case == -1 ) || (Case == 3 )) test_case_3 (); if ((Case == -1 ) || (Case == 4 )) test_case_4 (); if ((Case == -1 ) || (Case == 5 )) test_case_5 (); }
You can’t perform that action at this time.
0 commit comments