一元多项式求导 (25) 1010
PAT (Basic Level) Practise (中文)
设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为n*xn-1。)
输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。
注意
1. 当且仅当,要检查非’A’是否为目标字符
bool sol(){
auto npos =string::npos;
string s;
cin>>s;
IF cout<<s;
// rule 1. s has some more
auto pos=s.find_first_not_of("PAT");
if(pos!=npos)return 0;
//rule 2 &3
auto ppos=s.find_first_not_of("A");
auto tpos=s.find_first_not_of("A",ppos+1);
//s has lack of some P or A
if(ppos==npos||tpos==npos)return 0;
//check if
if(s[ppos]!='P'||s[tpos]!='T')return 0;
//s ends with 'A'
pos=s.find_first_not_of("A",tpos+1);
if(pos!=npos)return 0;
auto alen=ppos;
auto blen=tpos-ppos-1;
auto clen=s.size()-tpos-1;
IF cout<<alen<<' '<<blen<<' '<<clen<<' '<<s<<endl;
if(blen==0)return 0;
if(alen<0||blen<0||clen<0)return 0;
if(clen ==blen*alen )return 1;
else return 0;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)printf(sol()?"YES\n":"NO\n");
return 0;
}