Infinite Replacement(无限替换)
题解:题目的意思就是用t字符串来替换s字符串里面的字母a,变换无数次 ,问一共可以得到多少种不同的字符串
一共有三种情况:
1.tt字符串只由一个字母a组成,s字符串怎么变换都是最开始的那个;
2.tt字符串中含有a且字符长度大于1,那可以无限替换 输出-1;
3.tt字符串不符合上面两种情况 直接理解为数学排列组合 (一个格子里可以装a或是字符串tt,共有l1个格子,一个格子有两种情况,pow(2,l1));
//需要注意的是pow(2,l1),2^50远远超过了int的范围 用long long
#include#include #include <string.h> #include <string> #include #include using namespace std; int main() { int t; cin>>t; while(t--) { string s,tt; cin>>s; cin>>tt; int flag=0; int l1=s.length(); int l2=tt.length(); if(tt[0]=='a' && l2==1) { cout<<"1"<<endl; continue; } for(int i=0;i ) { if(tt[i]=='a') { flag=1; break; } } long long ans=pow(2,l1); if(flag) cout<<"-1"<<endl; else cout< endl; } return 0; }