A题
题意:给定d个操作,每个操作当中只包含1和0,若存在0,则表示操作者获胜,求最大的连续获胜个数
分析:直接统计之后用一个数组纪录下来即可
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <string> 5 #include <vector> 6 #include <algorithm> 7 #include <set> 8 #include <map> 9 #include <bitset> 10 #include <cmath> 11 #include <queue> 12 #include <stack> 13 using namespace std; 14 const int maxn=200; 15 int n,d; 16 int main() 17 { 18 while(cin>>n>>d) 19 { 20 string s[maxn]; 21 for(int i=0;i<d;i++) 22 cin>>s[i]; 23 int vis[maxn]; 24 memset(vis,0,sizeof(vis)); 25 for(int i=0;i<d;i++){ 26 for(int j=0;j<n;j++){ 27 if(s[i][j]==‘0‘){ 28 vis[i]=1;break; 29 } 30 } 31 } 32 int cnt=0; 33 int mx=0; 34 for(int i=0;i<d;i++){ 35 if(vis[i]) 36 cnt++; 37 else 38 cnt=0; 39 mx=max(mx,cnt); 40 } 41 cout<<mx<<endl; 42 } 43 return 0; 44 }
B题
题意:求出第n大的数位为偶数的回文数
分析:因为是偶数位的回文数,所以必然可以分为前一半和后一半,两个不一样的数,前前一半大小必定不同,同时前一半可以为任意数,因此第n大的偶数位回文数就为前一半是n,后一半是n的转置
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <string> 5 #include <vector> 6 #include <algorithm> 7 #include <set> 8 #include <map> 9 #include <bitset> 10 #include <cmath> 11 #include <queue> 12 #include <stack> 13 using namespace std; 14 string s; 15 int main() 16 { 17 while(cin>>s) 18 { 19 cout<<s; 20 reverse(s.begin(),s.end()); 21 cout<<s<<endl; 22 } 23 return 0; 24 }
时间: 2024-10-13 15:14:38