Skip to content

Commit ca47358

Browse files
committed
add basic 1116-1120
1 parent 1fd038b commit ca47358

File tree

5 files changed

+137
-0
lines changed

5 files changed

+137
-0
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
s = input()
2+
if len(s) % 2 == 1:
3+
print('Error: %d digit(s)' % len(s))
4+
else:
5+
a, b = int(s[:len(s)//2]), int(s[len(s)//2:])
6+
if b - a == 2:
7+
print('Yes: %d - %d = 2' % (b, a))
8+
else:
9+
print('No: %d - %d != 2' % (b, a))
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
def func(arr):
2+
is_all_single = True
3+
mem = []
4+
for i, v in enumerate(arr):
5+
if v >= 10: is_all_single = False
6+
7+
r = 0 if v == 0 else 1
8+
while v != 0:
9+
r *= (v % 10) ** 3
10+
v //= 10
11+
12+
v, r = r, 0
13+
while v != 0:
14+
r += v % 10
15+
v //= 10
16+
17+
mem.append((i, r))
18+
if is_all_single: return
19+
else:
20+
for i, v in mem:
21+
arr[i] = v
22+
func(arr)
23+
24+
n1, n2 = map(int, input().split())
25+
arr = [i for i in range(n1, n2+1)]
26+
27+
func(arr)
28+
max_count = 0
29+
ans = []
30+
for v in set(arr):
31+
cnt = arr.count(v)
32+
max_count = max(max_count, cnt)
33+
ans.append((v, cnt))
34+
35+
ans = filter(lambda x: x[1] == max_count, ans)
36+
ans = sorted(ans, key=lambda x: x[0])
37+
print(max_count)
38+
print(' '.join(map(lambda x: str(x[0]), ans)))
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
pinyin = ['ling', 'yi', 'er', 'san', 'si', 'wu', 'liu', 'qi', 'ba', 'jiu']
2+
3+
def get_number(s):
4+
if 'sqrt' in s:
5+
n = int(s[4:])
6+
return int(n ** 0.5)
7+
8+
if s in pinyin:
9+
return pinyin.index(s)
10+
11+
if '^' in s:
12+
n, m = map(int, s.split('^'))
13+
return int(n ** m)
14+
15+
return int(eval(s))
16+
17+
phone = []
18+
for i in range(11):
19+
s = input()
20+
phone.append(get_number(s))
21+
print(''.join(map(str, phone)))
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# construct peak array from left and right, then find the max of each element in the two arrays
2+
# stands for the max height, then add 1 and multiply 100 is required the volume of milk
3+
n = int(input())
4+
arr = list(map(int, input().split()))
5+
6+
left, right = [1], [1]
7+
for i in range(1, n):
8+
if arr[i] > arr[i-1]:
9+
left.append(left[i-1] + 1)
10+
elif arr[i] == arr[i-1]:
11+
left.append(left[i-1])
12+
else:
13+
left.append(1)
14+
15+
for i in range(n-2, -1, -1):
16+
if arr[i] > arr[i+1]:
17+
right.append(right[n-i-2] + 1)
18+
elif arr[i] == arr[i+1]:
19+
right.append(right[n-i-2])
20+
else:
21+
right.append(1)
22+
23+
right = list(reversed(right))
24+
25+
ans = 0
26+
for i in range(n):
27+
ans += (max(left[i], right[i]) + 1) * 100
28+
print(ans)
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <algorithm>
4+
using namespace std;
5+
6+
typedef long long int64;
7+
8+
// Solution 1: O(n^2), 遍历所有可能的区间并统计合法的区间数
9+
int Solution1(const vector<int64> &sum, int64 n, int64 m) {
10+
int64 cnt = 0;
11+
for (int i = 0; i <= n; i++) {
12+
for (int j = i+1; j <= n; j++) {
13+
if (sum[j]-sum[i] <= m) cnt++;
14+
}
15+
}
16+
return cnt;
17+
}
18+
19+
// Solution 2: O(nlogn), 二分查找, 从后往前遍历, 对于每个i, 二分查找第一个pos, 使得sum[pos] >= sum[i]-m
20+
int Solution2(const vector<int64> &sum, int64 n, int64 m) {
21+
int64 cnt = 0;
22+
for (int i = n; i >= 1; i--) {
23+
int pos = lower_bound(sum.begin(), sum.end(), sum[i] - m) - sum.begin();
24+
cnt += i - pos;
25+
}
26+
return cnt;
27+
}
28+
29+
int main() {
30+
ios::sync_with_stdio(false);
31+
int64 n, m, v;
32+
cin >> n >> m;
33+
vector<int64> sum(n+1, 0);
34+
for (int i = 1; i <= n; i++) {
35+
cin >> v;
36+
sum[i] = sum[i-1] + v;
37+
}
38+
// cout << Solution1(sum, n, m) << endl;
39+
cout << Solution2(sum, n, m) << endl;
40+
return 0;
41+
}

0 commit comments

Comments
 (0)