Skip to content

Commit 7d1ff60

Browse files
committed
4 problems solved.
1 parent 50a0106 commit 7d1ff60

File tree

4 files changed

+128
-0
lines changed

4 files changed

+128
-0
lines changed

src/1360.cpp

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
int daysBetweenDates(string date1, string date2) {
2+
3+
int mdays[12] = {31,28,31,30,31,30,
4+
31,31,30,31,30,31};
5+
int year1 = atoi(date1.substr(0, 4).c_str());
6+
int year2 = atoi(date2.substr(0, 4).c_str());
7+
int month1 = (date1[5]-'0')*10 + (date1[6]-'0');
8+
int month2 = (date2[5]-'0')*10 + (date2[6]-'0');
9+
int day1 = (date1[8]-'0')*10 + (date1[9]-'0');
10+
int day2 = (date2[8]-'0')*10 + (date2[9]-'0');
11+
12+
int interval1 = 0, interval2 = 0;
13+
for (int i = 1971; i < year1; ++i)
14+
interval1 += (i-1972)%4 != 0 ? 365 : 366;
15+
for (int i = 1971; i < year2; ++i)
16+
interval2 += (i-1972)%4 != 0 ? 365 : 366;
17+
18+
for (int i = 1; i < month1; ++i)
19+
{
20+
interval1 += mdays[i-1];
21+
if (i == 2)
22+
{
23+
if ((year1-1972)%4 == 0 && year1 != 2100)
24+
interval1 += 1;
25+
}
26+
}
27+
28+
for (int i = 1; i < month2; ++i)
29+
{
30+
interval2 += mdays[i-1];
31+
if (i == 2)
32+
{
33+
if ((year2-1972)%4 == 0 && year2 != 2100)
34+
interval2 += 1;
35+
}
36+
}
37+
interval1 += day1;
38+
interval2 += day2;
39+
40+
return abs(interval1-interval2);
41+
}

src/1365.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
vector<int> smallerNumbersThanCurrent(vector<int>& nums) {
2+
int len = nums.size();
3+
vector<int> ct(101);
4+
vector<int> sum(101);
5+
for (int i = 0; i < len; ++i)
6+
++ct[nums[i]];
7+
8+
int subsum = 0;
9+
for (int i = 1; i < 101; ++i)
10+
{
11+
subsum += ct[i-1];
12+
sum[i] = subsum;
13+
}
14+
15+
vector<int> res(len);
16+
for (int i = 0; i < len; ++i)
17+
res[i] = sum[nums[i]];
18+
19+
return res;
20+
}

src/532.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
int findPairs(vector<int>& nums, int k) {
2+
sort(nums.begin(), nums.end());
3+
int len = nums.size();
4+
if (len <= 1)
5+
return 0;
6+
if (len == 2)
7+
return nums[1]-nums[0] == k ? 1 : 0;
8+
int i = 0;
9+
int j = 1;
10+
int ct = 0;
11+
while (i < len-1 && j < len)
12+
{
13+
int t = nums[j] - nums[i];
14+
if (t < k)
15+
++j;
16+
else
17+
{
18+
if (t == k)
19+
++ct;
20+
int n = i+1;
21+
while (n < len && nums[n] == nums[i])
22+
++n;
23+
i = n;
24+
j = i+1;
25+
}
26+
}
27+
28+
return ct;
29+
}

src/970.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
vector<int> powerfulIntegers(int x, int y, int bound) {
2+
if (bound <= 1)
3+
return {};
4+
if (bound == 2)
5+
return {2};
6+
if (x == 1 && y == 1)
7+
return {2};
8+
if (x == 1 || y == 1)
9+
{
10+
int t = x != 1 ? x : y;
11+
int x = 1;
12+
int sz = log(bound-1)/log(t)+1;
13+
vector<int> res(sz);
14+
for (int i = 0; i < sz; ++i)
15+
{
16+
res[i] = 1+x;
17+
x *= t;
18+
}
19+
return res;
20+
}
21+
22+
int m = log(bound)/log(x);
23+
int n = log(bound)/log(y);
24+
set<int> st;
25+
for (int i = 0; i <= m; ++i)
26+
{
27+
for (int j = 0; j <= n; ++j)
28+
{
29+
double t = pow(x, i) + pow(y, j);
30+
if (t <= bound)
31+
st.insert(t);
32+
}
33+
}
34+
35+
vector<int> res;
36+
res.assign(st.begin(), st.end());
37+
return res;
38+
}

0 commit comments

Comments
 (0)