img

牛客周赛Round 3

A

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define frep(i,a,n) for(int i=a;i>=n;i--)
#define int long long
const int N=1e5+100;
#define PII pair<int,int>
bool check(string x)
{
ll ans=0;
rep(i,1,x.length()-1)
{
ans=ans*10+x[i]-'0';
}
return ans%7==0;
}
signed main()
{
int n;
cin>>n;
string s=to_string(n);
int m=s.length();
s=" "+s;
rep(i,0,9)
{
string x=s;
x+=(i+'0');
if(check(x))
{
rep(i,1,x.length()-1)
{
cout<<x[i];
}
return 0;
}
}
return 0;
}

B

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//明明没做过却显示代码了()
//直接暴力枚举26个字母即可,然后用绝对值进行计算
//注意顺时针和逆时针
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define frep(i,a,n) for(int i=a;i>=n;i--)
#define int long long
const int N=1e5+100;
#define PII pair<int,int>
signed main()
{
string s;
cin>>s;
int ans=1e9+10;
for(int i='a';i<='z';++i){
int res=0;
for(int j=0;j<s.size();j++){
int t=abs(s[j]-i);
res+=min(t,26-t);
}
ans=min(res,ans);
}
cout<<ans<<endl;
return 0;
}

C

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//固定一个枚举一个的思想
//傻逼了,cnt和i搞错了
//调了好一会
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define frep(i,a,n) for(int i=a;i>=n;i--)
#define int long long
const int N=1e5+100;
#define PII pair<int,int>
#define lowbit(x) (x&(-x))
signed main()
{
int n,m,x,y;
cin>>n>>m>>x>>y;
int cnt=min(n/2,m);
int ans=0;
rep(i,0,cnt)
{
int _cnt=min(n-i*2,(m-i)/2);
ans=max(ans,i*x+_cnt*y);
}
cout<<ans<<'\n';
return 0;
}

D

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//贪心加等差数列直接计算即可
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define frep(i,a,n) for(int i=a;i>=n;i--)
#define int long long
const int N=1e5+100;
#define PII pair<int,int>
#define lowbit(x) (x&(-x))
const int mod=1e9+7;
signed main()
{
int n,m;
cin>>n;
int ans=3*(4*n-4+1)%mod*(2*n-2)-10;
ans%=mod;
ans=(ans+mod)%mod;
int num=(n*n+4-4*n)%mod;//
ans=(ans+num%mod*2%mod*(2*n*n%mod-num+1)%mod)%mod;
ans=(ans+mod)%mod;
cout<<ans<<'\n';

return 0;
}
img