Skip to content

Commit 261cc55

Browse files
author
ksh-code
committed
y
1 parent 68e83d9 commit 261cc55

File tree

7 files changed

+212
-0
lines changed

7 files changed

+212
-0
lines changed

11812.cpp

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#include <iostream>
2+
#include <cmath>
3+
using namespace std;
4+
typedef long long ll;
5+
6+
7+
void solve(){
8+
ll N,M,K; cin >> N >> M >> K;
9+
for (int i = 0; i <K; i++) {
10+
int c = 0;
11+
ll a, b; cin >> a >> b;
12+
if (M==1) {
13+
cout << abs(a-b) << '\n';
14+
continue;
15+
}
16+
while (a != b) {
17+
if (a > b) {
18+
a = (a+M-2)/M;
19+
c++;
20+
} else {
21+
b = (b+M-2)/M;
22+
c++;
23+
}
24+
}
25+
cout << c<<'\n';
26+
}
27+
}
28+
29+
int main()
30+
{
31+
cin.tie(0)->sync_with_stdio(0);
32+
solve();
33+
34+
return 0;
35+
}

13116.cpp

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#include <iostream>
2+
using namespace std;
3+
typedef long long ll;
4+
5+
void solve(){
6+
int a,b; cin >> a>>b;
7+
while (a!=b) {
8+
if (a > b) a/=2;
9+
else b/=2;
10+
}
11+
cout << a*10;
12+
}
13+
14+
int main()
15+
{
16+
cin.tie(0)->sync_with_stdio(0);
17+
int T;cin>>T;while(T--) {
18+
solve();
19+
cout <<'\n';
20+
}
21+
22+
return 0;
23+
}

14942.cpp

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#include <iostream>
2+
#include <set>
3+
using namespace std;
4+
typedef long long ll;
5+
6+
7+
void solve(){
8+
int N; cin >> N;
9+
int parent[N+1];
10+
for (int i = 1; i<= N;i++) parent[i]=i;
11+
for (int i = 1; i < N; i++) {
12+
int a, b; cin >> a >> b;
13+
parent[b] = a;
14+
}
15+
int a,b; cin >> a>>b;
16+
set<int> s;
17+
while (!s.count(a)) {
18+
s.insert(a);
19+
a = parent[a];
20+
}
21+
while (!s.count(b)) {
22+
b = parent[b];
23+
}
24+
cout << b;
25+
}
26+
27+
int main()
28+
{
29+
cin.tie(0)->sync_with_stdio(0);
30+
int T;cin>>T;while(T--) {
31+
solve();
32+
cout <<'\n';
33+
}
34+
35+
return 0;
36+
}

3117.cpp

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#include <iostream>
2+
#include <cmath>
3+
using namespace std;
4+
typedef long long ll;
5+
6+
7+
void solve(){
8+
ll N,K,M; cin >>N>>K>>M;
9+
10+
int bits = 1; for (; (1LL<<bits) <= M; bits++);
11+
bits += 2;
12+
13+
int arr[N]; for (int i = 0; i < N; i++) cin >> arr[i];
14+
int sparse[K+1][bits+1];
15+
for (int i = 1; i <= K; i++) cin >> sparse[i][0];
16+
for (int j = 1; j <= bits; j++) {
17+
for (int i = 1; i <= K; i++) {
18+
sparse[i][j] = sparse[sparse[i][j-1]][j-1];
19+
}
20+
}
21+
22+
for (int i = 0; i < N; i++) {
23+
ll n=M-1,x=arr[i];
24+
for (int j = bits; j >= 0; j--) {
25+
if (n>=(1LL<<j)) {
26+
n -= 1<<j;
27+
x = sparse[x][j];
28+
}
29+
}
30+
cout << x << ' ';
31+
}
32+
}
33+
34+
int main()
35+
{
36+
cin.tie(0)->sync_with_stdio(0);
37+
solve();
38+
39+
return 0;
40+
}

3584.cpp

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#include <iostream>
2+
#include <set>
3+
using namespace std;
4+
typedef long long ll;
5+
6+
7+
void solve(){
8+
int N; cin >> N;
9+
int parent[N+1];
10+
for (int i = 1; i<= N;i++) parent[i]=i;
11+
for (int i = 1; i < N; i++) {
12+
int a, b; cin >> a >> b;
13+
parent[b] = a;
14+
}
15+
int a,b; cin >> a>>b;
16+
set<int> s;
17+
while (!s.count(a)) {
18+
s.insert(a);
19+
a = parent[a];
20+
}
21+
while (!s.count(b)) {
22+
b = parent[b];
23+
}
24+
cout << b;
25+
}
26+
27+
int main()
28+
{
29+
cin.tie(0)->sync_with_stdio(0);
30+
int T;cin>>T;while(T--) {
31+
solve();
32+
cout <<'\n';
33+
}
34+
35+
return 0;
36+
}

6615.cpp

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#include <iostream>
2+
#include <map>
3+
using namespace std;
4+
typedef unsigned long long ll;
5+
6+
bool solve(){
7+
ll a,b; cin >> a>>b;
8+
ll aa=a,bb=b;
9+
if (a+b==0) return false;
10+
11+
map<ll,int>m;
12+
m[a]=0;
13+
int i=1;
14+
while (a!=1) {
15+
if (a % 2) {
16+
a = 3*a+1;
17+
} else {
18+
a = a/2;
19+
}
20+
m[a] = i++;
21+
}
22+
23+
i=0;
24+
while (!m.count(b)) {
25+
if (b % 2) {
26+
b = 3*b+1;
27+
} else {
28+
b = b/2;
29+
}
30+
i++;
31+
}
32+
printf("%lld needs %d steps, %lld needs %d steps, they meet at %lld\n",aa,m[b],bb,i,b);
33+
34+
return true;
35+
}
36+
37+
int main()
38+
{
39+
while (solve());
40+
41+
return 0;
42+
}

a

-80 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)