我要通過! 20

2022-05-08 13:45:09 字數 2208 閱讀 9276

題意:

答案正確」是自動判題系統給出的最令人歡喜的回覆。本題屬於pat的「答案正確」大派送 —— 只要讀入的字串滿足下列條件,系統就輸出「答案正確」,否則輸出「答案錯誤」。

得到「答案正確」的條件是:

1. 字串中必須僅有p, a, t這三種字元,不可以包含其它字元;

2. 任意形如 xpatx 的字串都可以獲得「答案正確」,其中 x 或者是空字串,或者是僅由字母 a 組成的字串;

3. 如果 apbtc 是正確的,那麼 apbatca 也是正確的,其中 a, b, c 均或者是空字串,或者是僅由字母 a 組成的字串。

現在就請你為pat寫乙個自動裁判程式,判定哪些字串是可以獲得「答案正確」的。

分析:1、對於第乙個條件,可知,字串中有其他字元則輸出no。

2、對於第二個條件,可知

(1)首先,因為x 或者是空字串,或者是僅由字母 a 組成的字串,所以p和t的個數只能出現一次,超過一次或沒出現都是no,且p的位置需要在t前面。

(2)假設p之前的a的個數為a,p與t之間的a的個數為b,t之後的a的個數為c。

形如 xpatx 的字串,這裡pat前後的x指的是同乙個字串,即a與c是相等的,這裡可以設他們都為x個。而b初始是為1的。

3、對於第三個條件, 可知,

(1)如果 apbtc 是正確的,那麼 apbatca 也是正確的,可知,b每增加1個,c就增加x個。

即當b為1時,c為x,

當b為2時,c為2x,

當b為3時,c為3x,……而a一直是x個,因此,當c%a==0且c/a==b時為yes。

(2)注意,當a與c都為0的時候,即x為0的時候,b每增加1個,c就增加0個,

即當a與c都為0的時候,p與t之間可以有許多個a,唯獨不能沒有a,此處需要特判。

#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define lowbit(x) (x & (-x))

const double eps = 1e-8;

inline int dcmp(double a, double b)

typedef long long ll;

typedef unsigned long long ull;

const int int_inf = 0x3f3f3f3f;

const int int_m_inf = 0x7f7f7f7f;

const ll ll_inf = 0x3f3f3f3f3f3f3f3f;

const ll ll_m_inf = 0x7f7f7f7f7f7f7f7f;

const int dr = ;

const int dc = ;

const int mod = 1e9 + 7;

const double pi = acos(-1.0);

const int maxn = 100 + 10;

const int maxt = 10000 + 10;

using namespace std;

char s[maxn];

bool judge(char x)

int main()

if(s[i] == 'p') ++cnt1;

if(s[i] == 't') ++cnt2;

if(cnt1 == 2 || cnt2 == 2)

}if(!ok) printf("no\n");

else

if(s[i] == 't')

}if(id1 == -1 || id2 == -1 || (id1 != -1 && id2 != -1 && id1 > id2))

int a = id1;

int b = id2 - id1 - 1;

int c = len - a - b - 2;

if(a == 0 && c == 0)

if(c % a == 0 && c / a == b)

else}}

return 0;

}

1003 我要通過! 20

pat1003 規則1和2是基本要求 規則3 apbtc apbatca,那麼可以逆推 apbatca 到 apbtc,直到 a pata 這種形式,說明源字串是符合要求的 詳細說明 apbtc,則b中每次減少乙個a,c中減少a字串,直到cpatd形式,若c d,則說明滿足規則2,即原串符合要求 i...

1003 我要通過! 20

1.字串中必須僅有p,a,t這三種字元,不可以包含其它字元 2.任意形如 xpatx 的字串都可以獲得 答案正確 其中 x 或者是空字串,或 者是僅由字母 a 組成的字串 3.如果 apbtc 是正確的,那麼 apbatca 也是正確的,其中 a,b,c 均或者是空字串,或者是僅由字母 a 組成的字...

1003 我要通過! 20

先貼上題目 這個題目從開始思考,到最終得到 答案正確 的時間跨度很長,主要原因有 1.題目要求分析不清 2.實現時,出現幾個困難點 1 如何讀入多個字串?最初出現問題可能是由於沒有注意到題目中要求字串長度不超過100 2 陣列元素個數未知,如何避免出現錯誤?this is the code.incl...