信奧 CSP-J 入門題講解提示詞(C++:讀題、樣例手推、思路、代碼逐段講解與常見錯誤)

學 C++ 資訊學競賽的中小學生做 CSP-J 入門題,看了題解還是不會自己寫時用:貼上題目和數據範圍,AI 先讓你手推樣例、說出思路,再判斷思路能通過哪些數據,逐段講解代碼,並按數組越界、整數溢出等清單檢查你的程序。

NNathaniel bigo··原創首發·AI 輔助撰寫
通用大模型 對話模型通用
我在學資訊學競賽(CSP-J 入門級),語言是 C++。請你當教練帶我做一道題:先讓我自己讀題和想思路,再講解;不要一開始就貼完整代碼。

題目(含輸入輸出格式、樣例、數據範圍):[題目全文]
我學過的內容:[我學過的內容](如:循環、數組、函數,沒學遞歸)
我的思路或代碼(可選):[我的思路或代碼]

一、讀題
請我用自己的話回答,你再糾正:
輸入什麼,格式怎樣?
輸出什麼,格式有什麼要求(空格、換行、小數位數)?
數據範圍是多少?最大的情況下,答案或中間結果大約有多大?
有沒有容易忽略的字眼(如「不超過」「從 1 開始編號」)?

二、手推樣例
請我在紙上把樣例輸入一步步算成樣例輸出。對不上說明題意沒理解,這時你再解釋。

三、我先說思路
請我說出打算怎麼做,你從三方面評價:
正確性:有沒有反例;
時間:根據數據範圍估算運算次數,按「一秒大約可以做一億次簡單運算」粗略判斷會不會超時;
部分分:只能通過部分數據時,說明要拿滿分該改進什麼。
我沒有思路時分三次提示:先讓我把手推的過程寫成循環,再點出所需的知識點,最後才給完整思路。

四、代碼逐段講解
按「頭文件與變量定義 → 讀入 → 核心處理 → 輸出」分段給出代碼,每段後面說明:這一段在做什麼,變量為什麼選這個類型,數組為什麼開這麼大。代碼風格適合初學者:變量名有意義,不使用我沒學過的語法。

五、常見錯誤清單
逐條檢查我的代碼(沒有就查你給的代碼),寫「有」或「沒有」:
- 數組開小或下標越界(從 0 還是從 1 開始,有沒有訪問到第 n + 1 個);
- 該用 long long 的地方用了 int(兩個 int 相乘、累加和可能超過約 21 億);
- 變量沒有初始化,求最值時初始值不合適;
- 沒有考慮邊界數據(n 等於 1、全部相同、取到最大值);
- 整數除法捨去了小數部分,或者需要取模卻忘了;
- 文件讀寫的文件名或 freopen 寫錯,調試輸出沒有刪掉。

六、造數據
教我造最小、普通、卡邊界三組數據,先說預期輸出再運行。

約束:代碼必須能編譯並通過樣例,給出前按樣例核對一遍;比賽規則以官方當年的通知為準。

高亮處換成你自己的內容:[題目全文]、[我學過的內容]、[我的思路或代碼]

ChatGPT Plus 充值

已被複製 0 次

使用說明

怎麼填變量:[題目全文] 把輸入輸出格式、樣例和數據範圍都貼上,數據範圍決定用什麼類型、會不會超時;[我學過的內容] 寫清楚學到哪裏,AI 就不會用你沒學過的寫法;[我的思路或代碼] 有代碼就整段貼,沒寫出來就寫「卡在不知道怎麼存數據」。

常見問題與調整:

  • 樣例過了、提交卻不對 → 追問:「按常見錯誤清單逐條檢查我的代碼,再給我 2 組可能出錯的邊界數據。」
  • 講解裏的語法沒學過 → 追問:「不要用這個寫法,只用循環和數組重寫這一段。」
  • 超時了 → 追問:「我的做法運算次數大約是多少?哪一層循環可以省掉?先只給提示。」

示例輸出

示例,僅供參考(題目:輸入一個正整數 n,輸出 1 + 2 + … + n 的和,n 不超過 10 的 9 次方;學生的思路是用 for 循環累加,變量用 int)

三、思路評價

  • 正確性:累加的思路是對的。
  • 時間:n 最大是 10 億,循環 10 億次,超過了「一秒約一億次」的估計,可能超時;改用求和公式 n × (n + 1) ÷ 2,只算一次。
  • 部分分:循環加 int 的寫法,只能通過 n 較小的那部分數據。

四、代碼

cpp
#include <iostream>
using namespace std;

int main() {
    long long n;                    // n 本身不超過 int 範圍,但下面要做乘法
    cin >> n;
    cout << n * (n + 1) / 2 << endl;
    return 0;
}

五、常見錯誤清單(節選)

  • 該用 long long 的地方用了 int:有這個風險。n 取最大值時,n × (n + 1) 約為 10 的 18 次方,遠遠超過 int 的上限(約 21 億),所以 n 必須定義成 long long,讓乘法在 long long 範圍內進行。
  • 邊界數據:n = 1 時輸出 1,正確。

同款作品

用這條提示詞做出來的作品;原作者會因此獲得積分

做同款

還沒有同款,來做第一個。

Nathaniel 的更多內容

同主題

同模型

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~