題意:
「答案正確」是自動判題系統給出的最令人歡喜的回覆。本題屬於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...