本文主要是介绍5月23日 资格赛,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
A5
错解
#include<iostream>
using namespace std;
int T;
string s;
int main(){cin>>T;while(T--){cin>>s;int n=s.length();int a=0,b=0;int aa=0,bb=0;for(int i=0;i<n;i++){if(s[i]=='A')a++;if(a>=3&&s[i]=='5')bb++;}for(int i=n-1;i>=0;i--){if(s[i]=='5')b++;if(b>=2&&s[i]=='A')aa++;}if(aa<=2||bb<=1)cout<<0<<endl;else cout<<min(aa-3,bb-2)+1<<endl;}
}
不一定是要AAAAAAAA55555555我最后的答案应该是5555555555AAAAAAAAAAA,但是5可以穿插2个A,A里面可以穿插一个5
正解
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int sum[105];
string s;
int main(){int t;cin>>t;while(t--){cin>>s;int n=s.length();//memset(sum,0,sizeof sum);if(s[0]=='A')sum[0]=1;else sum[0]=0;for(int i=1;i<n;i++)sum[i]=sum[i-1]+(s[i]=='A');int ans1=n;int sum5=0;int ans2=0;for(int i=n-1;i>=0;i--){if(s[i]=='5'){sum5++;if(sum5>=2){if(i>=1&&sum[i-1]>=3){ans1=min(ans1,ans2+sum[i-1]-2);ans2+=(sum5-1);sum5=1;}else break;}}}cout<<min(ans1,ans2)<<endl;}
}
#include <iostream>
#include <cstring>
#include <algorithm>
#define int long long
using namespace std;
int t,n,k;
int dp[100][100];int gcd(int a, int b) // 欧几里得算法
{return b ? gcd(b, a % b) : a;
}signed main(){cin>>t;while(t--){cin>>n>>k;if(k==0){cout<<"0/1"<<endl;continue;}if(n==k){cout<<"1/1"<<endl;continue;}for(int i=1;i<=n;i++)dp[i][1]=1,dp[i][i]=1;for(int i=2;i<=n;i++){for(int j=1;j<=n;j++){dp[i][j]=j*(dp[i-1][j]+dp[i-1][j-1]);}}int fz=0;for(int i=1;i<=k;i++)fz+=dp[n][i];//cout<<"fz="<<fz<<endl;int fm=0;for(int i=1;i<=n;i++)fm+=dp[n][i];//cout<<"fm="<<fm<<endl;int temp=gcd(fz,fm);fz/=temp;fm/=temp;cout<<fz<<"/"<<fm<<endl;}
}
这篇关于5月23日 资格赛的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!