Skip to content

Commit 43ee2d8

Browse files
Augusto CalacaAugusto Calaca
authored andcommitted
Add paste with solutions for spoj
1 parent 7cbc64d commit 43ee2d8

31 files changed

+1832
-0
lines changed

spoj/adabehive.cpp

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#include <iostream>
2+
#include <algorithm>
3+
#include <cmath>
4+
#include <vector>
5+
#include <map>
6+
7+
#define MAX 100010
8+
#define MAX2 2010
9+
#define f first
10+
#define s second
11+
#define pb push_back
12+
#define FAST ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)
13+
using namespace std;
14+
15+
typedef long long ll;
16+
typedef unsigned long long ull;
17+
18+
int bit[MAX2][MAX2];
19+
int in[MAX2][MAX2];
20+
21+
void update(int l, int r, int n, int m, int val) {
22+
for(; l <= n; l += l & -l)
23+
for(; r <= m; r += r & -r)
24+
bit[l][r] += val;
25+
}
26+
27+
ll query(int l, int r) {
28+
ll sum = 0;
29+
for(int j = r; j > 0; j -= j & -j)
30+
sum += bit[l][j];
31+
32+
return sum;
33+
}
34+
35+
int main() {
36+
FAST;
37+
38+
int n, m, q;
39+
cin >> n >> m >> q;
40+
for(int i = 0; i < n; i++) {
41+
int j = 0;
42+
for(; j < m; j++) {
43+
cin >> in[i][j];
44+
update(i + 1, j + 1, n, m, in[i][j]);
45+
}
46+
}
47+
48+
int k, l, r, v, l1, l2, r1, r2;
49+
while(q--) {
50+
cin >> k;
51+
if(k == 1) {
52+
cin >> l >> r >> v;
53+
update(l, r, n, m, v);
54+
}
55+
else {
56+
cin >> l1 >> r1 >> l2 >> r2;
57+
ll ans = 0;
58+
for(; l1 <= l2; l1++)
59+
ans += query(l1, r2) - query(l1, r1 - 1);
60+
cout << ans << "\n";
61+
}
62+
}
63+
64+
return 0;
65+
}

spoj/bsearch1.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#include <iostream>
2+
#include <algorithm>
3+
#include <cmath>
4+
#include <vector>
5+
#include <map>
6+
7+
#define f first
8+
#define s second
9+
#define pb push_back
10+
#define FAST ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)
11+
using namespace std;
12+
13+
typedef long long ll;
14+
typedef unsigned long long ull;
15+
16+
int main() {
17+
FAST;
18+
int n, q, f, v[100010];
19+
cin >> n >> q;
20+
for(int i = 0; i < n; i++) cin >> v[i];
21+
while(q--) {
22+
cin >> f;
23+
if(binary_search(v, v + n, f))
24+
cout << lower_bound(v, v + n, f) - v << "\n";
25+
else
26+
cout << "-1\n";
27+
}
28+
return 0;
29+
}

spoj/comdiv.cpp

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#include <iostream>
2+
#include <algorithm>
3+
#include <cmath>
4+
#include <vector>
5+
#include <set>
6+
7+
#define f first
8+
#define s second
9+
#define pb push_back
10+
#define FAST ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)
11+
using namespace std;
12+
13+
typedef long long ll;
14+
typedef unsigned long long ull;
15+
16+
const int MAX = 1e6 + 10;
17+
vector<int> primes;
18+
vector<bool> marked(MAX, true);
19+
20+
void sieve() {
21+
for(int i = 2; i * i <= MAX; i++)
22+
for(int j = i * i; j <= MAX; j += i)
23+
if(marked[j])
24+
marked[j] = false;
25+
26+
for(int i = 2; i <= MAX; i++)
27+
if(marked[i])
28+
primes.pb(i);
29+
}
30+
31+
int gcd(int a, int b) {
32+
while(b) {
33+
a %= b;
34+
a ^= b;
35+
b ^= a;
36+
a ^= b;
37+
}
38+
39+
return a;
40+
}
41+
42+
ll ndiv(int n) {
43+
ll rep = 1;
44+
for(int i = 0; primes[i] * primes[i] <= n; i++) {
45+
int c = 0;
46+
for(; n % primes[i] == 0; n /= primes[i])
47+
c++;
48+
rep *= (c + 1);
49+
}
50+
51+
if(n > 1) rep *= 2;
52+
return rep;
53+
}
54+
55+
int main() {
56+
FAST;
57+
58+
sieve();
59+
60+
int t, a, b, g;
61+
cin >> t;
62+
while(t--) {
63+
cin >> a >> b;
64+
g = gcd(a, b);
65+
cout << ndiv(g) << "\n";
66+
}
67+
68+
return 0;
69+
}

spoj/dcepc12g.cpp

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#include <iostream>
2+
#include <algorithm>
3+
#include <cmath>
4+
#include <vector>
5+
#include <map>
6+
7+
#define M 1000000007
8+
#define MAX 10000010
9+
#define pb push_back
10+
#define FAST ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)
11+
using namespace std;
12+
13+
typedef long long ll;
14+
typedef unsigned long long ull;
15+
16+
vector<int> phi(MAX, 0);
17+
18+
void precomp() {
19+
for(int i = 1; i < MAX; i++) phi[i] = i;
20+
for(int i = 2; i < MAX; i++)
21+
if(phi[i] == i) {
22+
phi[i] = i - 1;
23+
for(int j = (i << 1); j < MAX; j += i)
24+
phi[j] = (phi[j] / i) * (i - 1);
25+
}
26+
}
27+
28+
vector<int> pqtd;
29+
vector<bool> marked(MAX, true);
30+
void sieve() {
31+
for(int i = 2; i * i < MAX; i++)
32+
for(int j = i * i; j < MAX; j += i)
33+
if(marked[j])
34+
marked[j] = false;
35+
36+
pqtd.pb(0);
37+
pqtd.pb(0);
38+
pqtd.pb(1);
39+
for(int i = 3; i < MAX; i++) {
40+
if(marked[i])
41+
pqtd.pb(pqtd.back() + 1);
42+
else
43+
pqtd.pb(pqtd.back());
44+
}
45+
}
46+
47+
int fexp(int b, int e) {
48+
int ans = 1;
49+
for(; e; e >>= 1) {
50+
if(e & 1) ans = (ans % M * b % M) % M;
51+
b = (b % M * b % M) % M;
52+
}
53+
54+
return ans;
55+
}
56+
57+
int fat(int n) {
58+
int f = 1;
59+
for(int i = 1; i <= n; i++)
60+
f = (f % M * i % M) % M;
61+
return f;
62+
}
63+
64+
int main() {
65+
FAST;
66+
67+
precomp();
68+
sieve();
69+
70+
int t, n;
71+
cin >> t;
72+
while(t--) {
73+
cin >> n;
74+
cout << fexp(phi[n], fat(pqtd[n] - phi[n])) << "\n";
75+
}
76+
return 0;
77+
}

spoj/dcepcao3.cpp

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#include <iostream>
2+
#include <algorithm>
3+
#include <cmath>
4+
#include <vector>
5+
#include <map>
6+
7+
#define MAX 10010
8+
#define sq(x) (x) * (x)
9+
#define f first
10+
#define s second
11+
#define pb push_back
12+
#define FAST ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)
13+
using namespace std;
14+
15+
typedef long long ll;
16+
typedef unsigned long long ull;
17+
18+
ll phi[MAX];
19+
void precomp() {
20+
for(int i = 1; i < MAX; i++) phi[i] = i;
21+
for(int i = 2; i < MAX; i++)
22+
if(phi[i] == i) {
23+
phi[i] = i - 1;
24+
for(int j = (i << 1); j < MAX; j += i)
25+
phi[j] = (phi[j] / i) * (i - 1);
26+
}
27+
28+
for(int i = 2; i < MAX; i++)
29+
phi[i] += phi[i - 1];
30+
}
31+
32+
int main() {
33+
FAST;
34+
35+
precomp();
36+
int t, n;
37+
cin >> t;
38+
while(t--) {
39+
cin >> n;
40+
cout << sq(phi[n]) << "\n";
41+
}
42+
return 0;
43+
}

0 commit comments

Comments
 (0)