【解題】Zerojudge j179: 資料分類 (Classification)

題目連結

j179: 資料分類 (Classification)

我的想法

這題用到 #include <string> 裡的 stoi() 函式和 to_string() 函式。(如果你想自己寫出來這兩個函式也可以www)

然後其他照著題目敘述做應該可以吧!

stoi() 用法

use_stoi()
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <string>
using namespace std;

int main() {
string str = "01234";
int a = stoi(str);
cout << "a = " << a << "\n";
}
1
2
輸出:
a = 1234

to_string() 用法

use_to_string()
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <string>
using namespace std;

int main() {
int num = -1234;
string str = to_string(num);
cout << "str = " << str << "\n";
}
1
2
輸出:
str = -1234

參考解答

j179
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <string>
using namespace std;

string solve(string num, int len) {
int n = stoi(num), a = 0, b = 0;
switch (len) {
case 4:
a = n / 100;
b = n % 100;
if (a > 9) a = (a / 10) * (a % 10);
if (b > 9) b = (b / 10) * (b % 10);
if (a == 0) return to_string(b);
num = to_string(a) + to_string(b);
return num;
case 3:
a = (n / 100) * ((n / 10) % 10);
b = ((n / 10) % 10) * (n % 10);
num = to_string(a) + to_string(b);
return num;
case 2:
a = n / 10;
b = n % 10;
num = to_string(a * b);
return num;
default:
return "0";
}
return "0";
}

int main() {
string num;
cin >> num;

while (num.size() != 1) {
num = solve(num, num.size());
}
cout << num;
return 0;
}