###### tags: `CPE` # *2022/05/24 CPE_04* ## 題目: ![](https://i.imgur.com/5Py2w18.png) ### 方法I(C++11以後適用) ``` #include <cstdio> #include <cstdlib> #include <iostream> #include <string> #include <vector> #include <map> #include <queue> #include <stack> #include <cmath> using namespace std; int main(void) { long long num_1, num_2, temp,fix_num_1,fix_num_2; int zero, one, two, three, four, five, six, seven, eight, nine, test; while (true) { num_1 = num_2 = temp = 0; zero = one = two = three = four = five = six = seven = eight = nine = 0; cin >> fix_num_1 >> fix_num_2;//Load into num_1 & num_2 if (fix_num_1 > fix_num_2) { num_1 = fix_num_2; num_2 = fix_num_1; } else { num_1 = fix_num_1; num_2 = fix_num_2; } if (num_1 == 0 && num_2 == 0) { break; } else { temp = num_1; vector <long long> num_list; //Generate a number list while (temp <= num_2) { num_list.push_back(temp); temp = temp + 1; } for (int j = 0; j < num_list.size(); j++) { string str_temp = to_string(num_list[j]); int str_long = 0; while (str_long < str_temp.size()) { if (str_temp[str_long] == '0') { zero++; } else if (str_temp[str_long] == '1') { one++; } else if (str_temp[str_long] == '2') { two++; } else if (str_temp[str_long] == '3') { three++; } else if (str_temp[str_long] == '4') { four++; } else if (str_temp[str_long] == '5') { five++; } else if (str_temp[str_long] == '6') { six++; } else if (str_temp[str_long] == '7') { seven++; } else if (str_temp[str_long] == '8') { eight++; } else if (str_temp[str_long] == '9') { nine++; } str_long++; } } cout << zero << " " << one << " " << two << " " << three << " " << four << " " << five << " " << six << " " << seven << " " << eight << " " << nine << endl; } } return 0; } ``` ### 方法II ``` #include <cstdio> #include <cstdlib> #include <iostream> #include <string> #include <vector> #include <map> #include <queue> #include <stack> #include <cmath> using namespace std; int bit_num(long long); int main(void) { long long num_1, num_2, temp, bit_temp,fix_num_1,fix_num_2; int zero, one, two, three, four, five, six, seven, eight, nine; int check; while (true) { num_1 = num_2 = temp = bit_temp = 0; zero = one = two = three = four = five = six = seven = eight = nine = check = 0; cin >> fix_num_1 >> fix_num_2;//Load into num_1 & num_2 if (fix_num_1 > fix_num_2) { num_1 = fix_num_2; num_2 = fix_num_1; } else { num_1 = fix_num_1; num_2 = fix_num_2; } temp = num_1; vector <long long> num_list; if (num_1 == 0 && num_2 == 0) { break; } else { //Generate a number list while (temp <= num_2) { num_list.push_back(temp); temp = temp + 1; } for (int j = 0; j < num_list.size(); j++) { bit_temp = bit_num(num_list[j]); temp = num_list[j]; for (int k = 0; k < bit_temp; k++) { check = temp % 10; if (check == 0) { zero++; } else if (check == 1) { one++; } else if (check == 2) { two++; } else if (check == 3) { three++; } else if (check == 4) { four++; } else if (check == 5) { five++; } else if (check == 6) { six++; } else if (check == 7) { seven++; } else if (check == 8) { eight++; } else if (check == 9) { nine++; } temp = temp / 10; } } cout << zero << " " << one << " " << two << " " << three << " " << four << " " << five << " " << six << " " << seven << " " << eight << " " << nine << endl; } } return 0; } //Get the bit of number int bit_num(long long number) { long long temp_number; temp_number = 0; int bit = 0; while (temp_number <= number) { temp_number = pow(10, bit); bit++; } bit = bit - 1; return bit; } ```