对于我这种蒟蒻来说,参加这种小白月赛还是蛮友好的:AC 3/10 排名 344/1386 还阔以啦(o)/~
做的三道题是ABD:
A:竟然是斐波那契找规律,虽然我到现在还没有用数学证明出来:
#include<bits/stdc++.h>
using namespace std;
int main() {
long long n;
scanf("%lld",&n);
if(n%2){
cout<<1;
}else{
cout<<-1;
}
return 0;
}
B:调用了LeetCode第5题的函数,然后暴力没过,最后抱着试一试的心态sqrt(n),AC(捶桌):
#include <bits/stdc++.h>
using namespace std;
void extend(string s, int l, int r,int& len) {
while (l >= 0 && r < s.size() && s[l] == s[r]) {
l--, r++;
}
if (r - l - 1 > len) {
len = r - l - 1;
}
}
int longestPalindrome(string s) {
int n = s.size(), start = 0, len = 1;
for (int i = 0; i < n - 1; i++) {
extend(s, i, i, len);
extend(s, i, i + 1, len);
}
return len;
}
int main(){
string s ;
cin>>s;
int n = s.size();
int res=0;
for(int i=0;i<=sqrt(n);i++){
string str = s.substr(i,n-i)+s.substr(0,i);
res = max(res,longestPalindrome(str));
if(res>=n) break;
}
cout<<res;
return 0;
}
D:开始sort一下以为水过,十几分钟后刷新一下WA,难道更新数据后重判了吗?最后暴力过:
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,res=0;
cin>>n;
vector<int> nums(n,0);
int a[100];
for(int i=0;i<n;i++){
cin>>nums[i];
int t = nums[i];
int cnt=0;
while(t){
if(t&1) a[cnt]++;
t>>=1;
cnt++;
}
}
int ans=1e9;
int flag=0;
for(int i=0;i<n;i++){
int t = nums[i];
int cnt=0;
int sum=0;
while(t){
if(t&1&&a[cnt]==1){
sum+=(1<<cnt);
}
t>>=1;
cnt++;
}
if(sum<ans){
ans = sum;
flag=i;
}
}
for(int i=0;i<n;i++){
if(i!=flag)
res|=nums[i];
}
cout<<res;
return 0;
}