c188. 奇偶判斷-超高難度測資版
Tags :
Accepted rate : 2人/4人 ( 50% ) [非即時]
評分方式:
Tolerant

最近更新 : 2025-12-29 18:32

Content

這是一個神祕的基礎題,請你判斷輸入的是奇數還是偶數,但想必你們在資研幹部的帶領下對程式也有一定的基礎了,所以這種題目根本難不倒你們,因此無聊的社長決定上點難度,請聰明的你們判斷輸入如果是奇數就輸出odd如果是偶數就輸出even外,多一項新規定就是當輸入這是一個神祕的基礎題,請你判斷輸入的是奇數還是偶數,但想必你們在資研幹部的帶領下對程式也有一定的基礎了,所以這種題目根本難不倒你們,因此無聊的社長決定上點難度,請聰明的你們多判斷當輸入為7的倍數時新增一個非獨立判定 若是除以7後為奇數輸出lucky seven若除以7後為偶數則輸出bad seven。這是最高級別判定,請優先判斷這個再判定奇偶數,詳細情況請鍵範例1、範例2 。如果輸入是小數的話則輸出社長別鬧了,告訴社長這題小數不在判斷範圍內,詳情見範例3

Input

如果你發現測資有點奇怪輸出就會有點奇怪

Output

阿如果測資太大輸出會TLE喔

Sample Input #1
7
Sample Output #1
lucky seven
Sample Input #2
14
Sample Output #2
bad seven
Sample Input #3
3.14159265358
Sample Output #3
社長別鬧了
Sample Input #4
5
Sample Output #4
odd
Sample Input #5
15
Sample Output #5
odd
Sample Input #6
666
Sample Output #6
even
Sample Input #7
114514
Sample Output #7
even
測資資訊:
記憶體限制: 64 MB
不公開 測資點#0 (2%): 1.0s , <1K
不公開 測資點#1 (2%): 1.0s , <1K
不公開 測資點#2 (4%): 1.0s , <1K
不公開 測資點#3 (4%): 1.0s , <1K
不公開 測資點#4 (4%): 1.0s , <1K
不公開 測資點#5 (4%): 1.0s , <1K
不公開 測資點#6 (1%): 1.0s , <1K
不公開 測資點#7 (2%): 1.0s , <1K
不公開 測資點#8 (4%): 1.0s , <1K
不公開 測資點#9 (4%): 1.0s , <1K
不公開 測資點#10 (4%): 1.0s , <1K
不公開 測資點#11 (4%): 1.0s , <1K
不公開 測資點#12 (2%): 1.0s , <1K
不公開 測資點#13 (4%): 1.0s , <1K
不公開 測資點#14 (3%): 1.0s , <1K
不公開 測資點#15 (4%): 1.0s , <1K
不公開 測資點#16 (4%): 1.0s , <1K
不公開 測資點#17 (4%): 1.0s , <1K
不公開 測資點#18 (4%): 1.0s , <1K
不公開 測資點#19 (4%): 1.0s , <1K
不公開 測資點#20 (1%): 1.0s , <1K
不公開 測資點#21 (1%): 1.0s , <1K
不公開 測資點#22 (10%): 1.0s , <1K
不公開 測資點#23 (10%): 1.0s , <1K
不公開 測資點#24 (10%): 1.0s , <1K
Hint :

本題請量力而為,可以先選擇拿到一部份分數後就跳過寫下一題或是不寫。而如果輸入一直都沒AC那輸出可能出了點問題

阿這題可能涉及字元字串轉換問題,因此貼心的社長給你們一個小提示,宣告時可以宣告成字串型態用string去宣告 而運算時可以做一點神秘的操作用另一個變數並轉換該字串變數的型態,將他從字串轉為小數或整數做運算。再來給你們一個小提示,全部用stod先轉成double再來會教你們怎麼判斷該小數的小數點後是否有數字,這很重要,若是沒數字請你做那些%的動作(因為代表該數為整數),小數點後有數字就要嗆社長。然後注意一點很重要,stod或stoi(字串轉int)的操作若讀入字串為非數字則編譯器會報錯,例如你輸入的是變數k字串是"你好",進行stod(k)或是stoi(k)編譯器會執行錯誤。再來我們會運用到強制轉換來判定if((int) n==n)這是將n轉換為整數後與原本的小數n做比較(用以判斷輸入的該數是整數或是小數),若是一樣才繼續執行後面的步驟(判斷奇偶、lucky seven、bad seven那些)

神秘操作如下

#include  
using namespace std;

int main() 
{
    string k;
    cin>>k;
    double num = stod(k);//這行是在轉換資料型態用的,是將string轉為double用,至於整數的則是用stoi處理,因為double不能做%運算。然後因為過於神秘加上進度問題,資研學長姐可能不會教,這樣轉完就可以用num1正常做小數運算或判斷了,而輸入的k依舊保持字串型態,應付某些測資
    if((int)num!=num){
      cout<<"社長別鬧了";
    }//這可以用來判定兩者是否一致,若一致則需要轉為整數
    return 0;
}

整數的強制轉換具體操作如下

include

using namespace std;

int main() 
{
    string k;
    cin>>k;
    double i=stod(k);//將字串k先轉為小數
    if ((int)i==i){
     int j=(int) i;//若k小數點後沒有數字則轉換完只存小數i整數部分的j會等於小數i
    }//若不同,則i就!=j

    cout<    return 0;
}

如果你直接拿k做運算的話,在字元字串的世界就是拿他們的ASCII碼做運算,而非拿k這個數字做運算,至於ASCII碼不用背,網路上查的到。

 

說白話一點,例如數字7的ASCII碼為55在此提判斷上若不進行型態轉換則會是直接拿"7"做運算會變成拿55做運算和判斷,而且字元字串不允許做乘除操作,編譯器會報錯,以下為錯誤示範

#include
using namespace std;

int main() 
{
    string k;
    cin>>k;
    if((k/7)%!=0){
      cout<<"lucky seven";
    }
    return 0;
}
這會使編譯器報錯因為你拿字串做乘除運算

#include
using namespace std;

int main() 
{
    string k;
    cin>>k;
    double i=stod(k);
    if((i/7)%!=0){
      cout<<"lucky seven";
    }
    return 0;
}

這也會使編譯器報錯,因為小數不能做%運算
所以請聰明的你想辦法參考上述資料解出這題拿到全部的分數吧

Tags:
出處:
[ASOJ2025 APCSS X APCS Guide Camp趣味賽]改 [管理者: stu310101(宣鳥䳦) ]


ID User Problem Subject Hit Post Date
沒有發現任何「解題報告」