Skip to content

Commit 7c105f5

Browse files
authored
update: 添加问题“1317.将整数转换为两个无零整数的和”的代码和题解 (#1120)
* autumn2025: P团笔试 * docs(3459): en+jp(init) (#1117) * word: en+jp (#1117) close #1113 * feat(word): workers - logs/keyboard (1117) (#1118) * clean: before to dev (#1117) (#1118) * word: en+jp today 2025.09.08 (#1118) * 1317: init (#1118) * 1317: WA.cpp (#1118) - OMG - 笔误了 * 1317: AC.cpp+py | WA.go (#1118) - 又笔误了 cpp - AC,100.00%,85.32% py - AC,100.00%,97.65% * 1317: TLE.go (#1118) * 1317: AC.go+java+rust (#1118) go - AC,100.00%,21.43% java - AC,100.00%,90.63% rust - AC,100.00%,37.50% * update: 添加问题“1317.将整数转换为两个无零整数的和”的代码和题解 (#1120) Signed-off-by: LetMeFly666 <[email protected]> * fileChange: try (#1118)(#1120) * fileChange: rollback (#1118)(#1120) 最终的diff好像还是几乎整个文件 这是github上git diff的bug吗? 或者说是权限问题? --------- Signed-off-by: LetMeFly666 <[email protected]>
1 parent fcb4db9 commit 7c105f5

34 files changed

+2927
-72
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*
2+
* @Author: LetMeFly
3+
* @Date: 2025-09-08 23:05:58
4+
* @LastEditors: LetMeFly.xyz
5+
* @LastEditTime: 2025-09-08 23:11:26
6+
*/
7+
#if defined(_WIN32) || defined(__APPLE__)
8+
#include "_[1,2]toVector.h"
9+
#endif
10+
11+
class Solution {
12+
private:
13+
inline bool ok(int n) {
14+
while (n) {
15+
if (n % 10 == 0) {
16+
return false;
17+
}
18+
n /= 10;
19+
}
20+
return true;
21+
}
22+
public:
23+
vector<int> getNoZeroIntegers(int n) {
24+
for (int i = 1; i < n; i++) {
25+
if (ok(i) && ok(n - i)) {
26+
return {i, n - i};
27+
}
28+
}
29+
return {}; // FAKE RETURN
30+
}
31+
};
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/*
2+
* @Author: LetMeFly
3+
* @Date: 2025-09-08 23:05:58
4+
* @LastEditors: LetMeFly.xyz
5+
* @LastEditTime: 2025-09-08 23:16:59
6+
*/
7+
package main
8+
9+
func nonZero1317(n int) bool {
10+
for n > 0 {
11+
if n % 10 == 0 {
12+
return false
13+
}
14+
n /= 10
15+
}
16+
return true
17+
}
18+
19+
func getNoZeroIntegers(n int) (ans []int) {
20+
for i := 1; i < n; i++ {
21+
if nonZero1317(i) && nonZero1317(n - i) {
22+
return []int{i, n - i}
23+
}
24+
}
25+
return
26+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/*
2+
* @Author: LetMeFly
3+
* @Date: 2025-09-08 23:05:58
4+
* @LastEditors: LetMeFly.xyz
5+
* @LastEditTime: 2025-09-08 23:19:08
6+
*/
7+
class Solution {
8+
private boolean non0(int n) {
9+
while (n > 0) {
10+
if (n % 10 == 0) {
11+
return false;
12+
}
13+
n /= 10;
14+
}
15+
return true;
16+
}
17+
18+
public int[] getNoZeroIntegers(int n) {
19+
for (int i = 1; i < n; i++) {
20+
if (non0(i) && non0(n - i)) {
21+
return new int[]{i, n - i};
22+
}
23+
}
24+
return new int[]{};
25+
}
26+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
'''
2+
Author: LetMeFly
3+
Date: 2025-09-08 23:05:58
4+
LastEditors: LetMeFly.xyz
5+
LastEditTime: 2025-09-08 23:13:48
6+
'''
7+
from typing import List
8+
9+
class Solution:
10+
def getNoZeroIntegers(self, n: int) -> List[int]:
11+
for i in range(n):
12+
if '0' not in str(i) and '0' not in str(n - i):
13+
return [i, n - i]
14+
return [] # FAKE RETURN
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/*
2+
* @Author: LetMeFly
3+
* @Date: 2025-09-08 23:05:58
4+
* @LastEditors: LetMeFly.xyz
5+
* @LastEditTime: 2025-09-08 23:22:39
6+
*/
7+
impl Solution {
8+
fn ok(mut n: i32) -> bool {
9+
while n > 0 {
10+
if n % 10 == 0 {
11+
return false;
12+
}
13+
n /= 10
14+
}
15+
true
16+
}
17+
18+
pub fn get_no_zero_integers(n: i32) -> Vec<i32> {
19+
for i in 1..n {
20+
if Solution::ok(i) && Solution::ok(n - i) {
21+
return vec![i, n - i];
22+
}
23+
}
24+
vec![]
25+
}
26+
}

Codes/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* @Author: LetMeFly
33
* @Date: 2025-08-07 14:11:36
44
* @LastEditors: LetMeFly.xyz
5-
* @LastEditTime: 2025-08-31 19:14:48
5+
* @LastEditTime: 2025-09-07 23:24:39
66
*/
77
pub struct Solution;
8-
include!("3027-find-the-number-of-ways-to-place-people-ii.rs"); // 这个fileName是会被脚本替换掉的
8+
include!("1317-convert-integer-to-the-sum-of-two-no-zero-integers.rs"); // 这个fileName是会被脚本替换掉的

Codes/meiTuan-Autumn2025-01.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/*
2+
* @Author: LetMeFly
3+
* @Date: 2025-09-06 10:17:35
4+
* @LastEditors: LetMeFly.xyz
5+
* @LastEditTime: 2025-09-06 10:18:48
6+
*/
7+
#include <iostream>
8+
#include <set>
9+
#include <unordered_set>
10+
using namespace std;
11+
12+
int main() {
13+
string s;
14+
cin >> s;
15+
unordered_set<string> se;
16+
int last = 0;
17+
for (int i = 0; i < s.size(); i++) {
18+
if (s[i] == 'd') {
19+
se.insert(s.substr(last, i - last));
20+
last = i + 2;
21+
}
22+
}
23+
cout << se.size() << endl;
24+
return 0;
25+
}

Codes/meiTuan-Autumn2025-02.cpp

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
/*
2+
* @Author: LetMeFly
3+
* @Date: 2025-09-06 10:23:00
4+
* @LastEditors: LetMeFly.xyz
5+
* @LastEditTime: 2025-09-06 10:39:29
6+
*/
7+
#include <iostream>
8+
#include <vector>
9+
#include <algorithm>
10+
using namespace std;
11+
using ll = long long;
12+
13+
/*
14+
0 1 1 2
15+
⬇️
16+
0 1 2 1
17+
*/
18+
/*
19+
0 1 3 4
20+
0 1 - 后面无所谓了
21+
*/
22+
int main() {
23+
int n;
24+
cin >> n;
25+
vector<ll> v;
26+
for (int i = 0; i < n; i++) {
27+
ll t;
28+
cin >> t;
29+
v.push_back(t);
30+
}
31+
sort(v.begin(), v.end());
32+
ll ans = 0;
33+
vector<ll> sorted;
34+
vector<bool> used(n);
35+
for (ll finding = 0, i = 0; i < n; i++) {
36+
if (v[i] == finding) {
37+
finding++;
38+
used[i] = true;
39+
sorted.push_back(v[i]);
40+
while (i + 1 < n && v[i + 1] == v[i]) {
41+
i++;
42+
ans += finding;
43+
}
44+
}
45+
ans += finding;
46+
// printf("finding = %lld, i = %lld, ans = %lld\n", finding, i, ans); //****
47+
}
48+
for (int i = 0; i < n; i++) {
49+
if (!used[i]) {
50+
sorted.push_back(v[i]);
51+
}
52+
}
53+
cout << ans << endl;
54+
for (int i = 0; i < n; i++) {
55+
if (i) {
56+
putchar(' ');
57+
}
58+
cout << sorted[i];
59+
}
60+
return 0;
61+
}
62+
63+
/*
64+
3
65+
1 0 1
66+
*/
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
/*
2+
* @Author: LetMeFly
3+
* @Date: 2025-09-06 10:23:00
4+
* @LastEditors: LetMeFly.xyz
5+
* @LastEditTime: 2025-09-06 10:53:00
6+
*/
7+
#include <iostream>
8+
#include <vector>
9+
#include <algorithm>
10+
using namespace std;
11+
using ll = long long;
12+
13+
/*
14+
给定一个长度为n的数组v,可以重新排列数组。
15+
重新排列后,定义一个长度同样为n的数组b,b[i] = mex(v[0], v[1], ..., v[i])
16+
其中mex(v)表示v中没有出现过的最小非负整数。
17+
你需要最大化b中的元素之和,返回这个最大值,以及一个可能的a的重排方案。
18+
19+
数据范围:1<=n<=10^5
20+
0<=v[i]<=10^9
21+
*/
22+
23+
/*
24+
0 1 1 2
25+
⬇️
26+
0 1 2 1
27+
*/
28+
/*
29+
0 1 3 4
30+
0 1 - 后面无所谓了
31+
*/
32+
int main() {
33+
int n;
34+
cin >> n;
35+
vector<ll> v;
36+
for (int i = 0; i < n; i++) {
37+
ll t;
38+
cin >> t;
39+
v.push_back(t);
40+
}
41+
sort(v.begin(), v.end());
42+
vector<ll> sorted;
43+
vector<bool> used(n);
44+
for (ll finding = 0, i = 0; i < n; i++) {
45+
if (v[i] == finding) {
46+
finding++;
47+
used[i] = true;
48+
sorted.push_back(v[i]);
49+
while (i + 1 < n && v[i + 1] == v[i]) {
50+
i++;
51+
}
52+
} else {
53+
break;
54+
}
55+
}
56+
for (int i = 0; i < n; i++) {
57+
if (!used[i]) {
58+
sorted.push_back(v[i]);
59+
}
60+
}
61+
62+
ll ans = 0;
63+
for (ll mini = 0, i = 0; i < n; i++) {
64+
if (sorted[i] == mini) {
65+
mini++;
66+
}
67+
ans += mini;
68+
}
69+
cout << ans << endl;
70+
for (int i = 0; i < n; i++) {
71+
if (i) {
72+
putchar(' ');
73+
}
74+
cout << sorted[i];
75+
}
76+
return 0;
77+
}
78+
79+
/*
80+
3
81+
1 0 1
82+
*/

0 commit comments

Comments
 (0)