**如果看不懂可以在底下留言發問**
**試著看懂別人的程式碼也是一種學習^ ^**
[C_AR59-易] 好數問題
問題描述 :
如果某一個四位數,恰好其中只有兩個數字相同,則稱為「好數」,例如: 1223,3464,9001 就算好數,但若有三數相同或多於一組的數字相同,如 1333,5535,2244 就不算是好數。若輸入的數字不是四位數,例如 1, 12, 123456 就不是四位數,請印出「 Failure Input 」。
輸入說明 :
輸入檔中的第一行為一個正整數 N ,表示共有 N 筆測試資料 。之後有 N 行,每行為一筆測試資料內含一個小於等於 2147483647 的正整數。
輸出說明 :
每組測試資料結果輸出於一行 。
範例 :
如果某一個四位數,恰好其中只有兩個數字相同,則稱為「好數」,例如: 1223,3464,9001 就算好數,但若有三數相同或多於一組的數字相同,如 1333,5535,2244 就不算是好數。若輸入的數字不是四位數,例如 1, 12, 123456 就不是四位數,請印出「 Failure Input 」。
輸入說明 :
輸入檔中的第一行為一個正整數 N ,表示共有 N 筆測試資料 。之後有 N 行,每行為一筆測試資料內含一個小於等於 2147483647 的正整數。
輸出說明 :
每組測試資料結果輸出於一行 。
範例 :
輸入範例 | 輸出範例 |
3 1222 1223 123456 | No Yes Failure Input |
- #include <iostream>
- #include <string>
- #include <sstream> //stringstream
- #include <algorithm> //fill()
- #include <cmath> //floor()
- using namespace std;
- int main() {
- // [C_AR59-易] 好數問題
- int N; //測資數量
- int two = 0; //數字數量為2的有幾個
- int num; //整數型態的測資
- string str_num; //字串型態的測資
- int len; //測資num的長度
- int count[10];//數字數量的統計
- fill(count, count+10, 0); //陣列填滿0
- cin >> N;//輸入測資數量
- for(int i = 0; i < N;i++)
- {
- cin >> num;
- //int to string(23~25行)
- stringstream ss;
- ss << num;
- str_num = ss.str();
- len = str_num.size(); //數字長度
- //判斷是否為四位數
- if(len != 4)
- {
- cout << "Failure Input" << endl;
- }
- else
- {
- count[int(floor(num/1000))]++; //千位
- count[int(floor((num%1000)/100))]++; //百位
- count[int(floor(num%100)/10)]++; //十位
- count[int(floor(num%10))]++; //個位
- for(int j = 0;j < 10;j++) //計算數量為2的次數
- {
- if(count[j] == 2)
- {
- two++;
- }
- }
- if(two == 1) //只有一個2代表是好數,輸出Yes
- {
- cout << "Yes" << endl;
- }
- else //其他都是No
- {
- cout << "No" << endl;
- }
- }
- //歸零
- fill(count, count+10, 0);
- two = 0;
- }
- return 0;
- }
沒有留言:
張貼留言