牛客小白月赛103
A 冰冰的正多边形
链接:https://ac.nowcoder.com/acm/contest/93218/A
思路:能拼成的正多边形中周长最小的正多边形周长,即先sort,后找第一个出现的正三边形
代码:
#include<bits/stdc++.h>
using namespace std;
int a[200];
int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n);
int ans=-1;
int cnt=1;
for(int i=2;i<=n;i++){
if(a[i]==a[i-1]) cnt++;
else cnt=1;
if(cnt==3) {
ans=a[i]*3;//找第一个正三边形
break;
}
}
if(ans==-1) cout<<"NO"<<endl;
else cout<<"YES"<<endl<<ans<<endl;
}
return 0;
}
B 冰冰的电子邮箱
链接:https://ac.nowcoder.com/acm/contest/93218/B
思路:贪心不要贪太多,按题目要求分两部分逐一判断
代码:
#include<bits/stdc++.h>
using namespace std;
bool f(char c){//判断公共条件“可以包含字母(a-z, A-Z)、数字(0-9)”
if((c>='a'&&c<='z')||(c>='A'&&c<='Z')||(c>='0'&&c<='9')) return true;
else return false;
}
bool check(string s){
int len=s.size();
if(len<1||len>64) return false;
if(s[0]=='.'||s[len-1]=='.') return false;
for(int i=0;i<len;i++){
if(!f(s[i])&&s[i]!='.') return false;
}
return true;
}
bool check2(string s){
int len=s.size();
if(len<1||len>255) return false;
if(s[0]=='.'||s[len-1]=='.') return false;
if(s[0]=='-'||s[len-1]=='-') return false;
for(int i=0;i<len;i++){
if(!f(s[i])&&s[i]!='-'&&s[i]!='.') return false;
}
return true;
}
int main(){
int t;
cin>>t;
while(t--){
string s;
cin>>s;
int cnt=-1;
int n=s.size();
for(int i=0;i<n;i++){
if(s[i]=='@') cnt=i;
}
string a= "",b= "";
for(int i=0;i<cnt;i++) a+=s[i];//取本地部分
for(int i=cnt+1;i<n;i++) b+=s[i];//取域地部分
//cout<<a<<endl<<b;
bool ok=(check(a)&&check2(b));//综合判断
if(ok) cout<<"Yes\n";
else cout<<"No\n";
}
return 0;
}
C 冰冰的异或
链接:https://ac.nowcoder.com/acm/contest/93218/C
思路:打表,找规律,注意特判
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
int t;
cin>>t;
while(t--){
ll n;//注意范围
cin>>n;
if(n==1||n==2) {
cout<<1<<endl;
continue;
}
ll cnt=1;
while(cnt<n) cnt*=2;
cout<<cnt<<endl;
}
return 0;
}