2022牛客寒假算法基础集训营2 K C H E F A I (7/13)
K 小沙的步伐
#include<bits/stdc++.h>
using namespace std;
#define mp make_pair
#define int long long
#define re register int
#define pb emplace_back
#define lowbit(x) (x&-x)
#define fer(i,a,b) for(re i = a ; i <= b ; i ++)
#define der(i,a,b) for(re i = a ; i >= b ; i --)
#define snow ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int lcm(int a,int b){return a*b/gcd(a,b);}
typedef pair<int,int>PII;
typedef pair<int,string>PIS;
int sum[10];
signed main(){
string s;
cin>>s;
for(int i=0;i<s.size();i++){
if(s[i]-'5'!=0){
sum[s[i]-'0']++;
sum[5]++;
}
}
for(int i=1;i<=9;i++)cout<<sum[i]<<' ';
cout<<endl;
return 0;
}
C 小沙的杀球
#include<bits/stdc++.h>
using namespace std;
#define mp make_pair
#define int long long
#define re register int
#define pb emplace_back
#define lowbit(x) (x&-x)
#define fer(i,a,b) for(re i = a ; i <= b ; i ++)
#define der(i,a,b) for(re i = a ; i >= b ; i --)
#define snow ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int lcm(int a,int b){return a*b/gcd(a,b);}
typedef pair<int,int>PII;
typedef pair<int,string>PIS;
signed main(){
int x,a,b;
cin>>x>>a>>b;
string s;
cin>>s;
int res=0;
for(int i=0;i<s.size();i++){
if(s[i]=='1'&&x>=a){
x-=a;
res++;
}
else{
x+=b;
}
}
cout<<res<<endl;
return 0;
}
H 小沙的数数
#include<bits/stdc++.h>
using namespace std;
#define mp make_pair
#define int long long
#define re register int
#define pb emplace_back
#define lowbit(x) (x&-x)
#define fer(i,a,b) for(re i = a ; i <= b ; i ++)
#define der(i,a,b) for(re i = a ; i >= b ; i --)
#define snow ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int lcm(int a,int b){return a*b/gcd(a,b);}
typedef pair<int,int>PII;
typedef pair<int,string>PIS;
const int mod=1e9+7;
int len(int x){
int res=0;
while(x){
if(x&1)res++;
x>>=1;
}
return res;
}
int qmi(int n,int m){
int res=1;
while(m){
if(m&1)res=res*n%mod;
n=n*n%mod;
m>>=1;
}
return res%mod;
}
signed main(){
int n,m;
cin>>n>>m;
m=len(m);
n%=mod;
int x=qmi(n,m);
cout<<x<<endl;
return 0;
}
E 小沙的长路

#include<bits/stdc++.h>
using namespace std;
#define mp make_pair
#define int long long
#define re register int
#define pb emplace_back
#define lowbit(x) (x&-x)
#define fer(i,a,b) for(re i = a ; i <= b ; i ++)
#define der(i,a,b) for(re i = a ; i >= b ; i --)
#define snow ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int lcm(int a,int b){return a*b/gcd(a,b);}
typedef pair<int,int>PII;
typedef pair<int,string>PIS;
signed main(){
int n;
cin>>n;
if(n==1){
cout<<0<<' '<<0<<endl;
}
else if(n==2){
cout<<1<<' '<<1<<endl;
}
else{
cout<<n-1<<' ';
if(n%2==0){
int x=(n-2)/2;
cout<<((n-1)*n/2-x)<<endl;
}
else{
cout<<((n-1)*n/2)<<endl;
}
}
return 0;
}
F 小沙的算数
#include<bits/stdc++.h>
using namespace std;
#define mp make_pair
#define int long long
#define re register int
#define pb emplace_back
#define lowbit(x) (x&-x)
#define fer(i,a,b) for(re i = a ; i <= b ; i ++)
#define der(i,a,b) for(re i = a ; i >= b ; i --)
#define snow ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int lcm(int a,int b){return a*b/gcd(a,b);}
typedef pair<int,int>PII;
typedef pair<int,string>PIS;
const int N=1e6+10;
const int mod=1e9+7;
char op[N];
int a[N];
int b[N];
int sum[N];
int mul(int a,int b){
return a%mod*b%mod;
}
int sub(int a,int b){
int x=a%mod-b%mod;
if(x<0)return (x+mod)%mod;
return x;
}
int qmi(int a,int b){
int res=1;
while(b){
if(b&1)res=res*a%mod;
a=a*a%mod;
b>>=1;
}
return res;
}
signed main(){
int n,q;
cin>>n>>q;
for(int i=1;i<=n-1;i++)cin>>op[i];
for(int i=1;i<=n;i++)cin>>a[i];
int cnt=1;
b[1]=cnt;
sum[cnt]=a[1];
int res=0;
for(int i=1;i<=n-1;i++){
if(op[i]=='+'){
cnt++;
b[i+1]=cnt;
sum[cnt]=a[i+1];
}
else{
b[i+1]=cnt;
sum[cnt]=mul(sum[cnt],a[i+1]);
}
}
for(int i=1;i<=cnt;i++){
res=(res+sum[i])%mod;
}
while(q--){
int x,y;
cin>>x>>y;
int xcnt=b[x];
res=sub(res,sum[xcnt]);
sum[xcnt]=mul(sum[xcnt],qmi(a[x],mod-2));
sum[xcnt]=mul(sum[xcnt],y);
res=(res+sum[xcnt])%mod;
a[x]=y;
cout<<res<<endl;
}
return 0;
}
A 小沙的炉石
#include<bits/stdc++.h>
using namespace std;
#define mp make_pair
#define int long long
#define re register int
#define pb emplace_back
#define lowbit(x) (x&-x)
#define fer(i,a,b) for(re i = a ; i <= b ; i ++)
#define der(i,a,b) for(re i = a ; i >= b ; i --)
#define snow ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int lcm(int a,int b){return a*b/gcd(a,b);}
typedef pair<int,int>PII;
typedef pair<int,string>PIS;
signed main(){
int a,b;
cin>>a>>b;
int q;
cin>>q;
while(q--){
int x;
cin>>x;
int l=1;int r=min(a,b+1);
while(l<r){
int mid=l+r+1>>1;
int left=mid*mid;
int right=mid*b+(mid+1)*mid/2;
if(left>x)r=mid-1;
else l=mid;
}
int left=l*l;
int right=l*b+(l+1)*l/2;
if(left<=x&&right>=x)cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
I 小沙的构造
#include<bits/stdc++.h>
using namespace std;
#define mp make_pair
#define int long long
#define re register int
#define pb emplace_back
#define lowbit(x) (x&-x)
#define fer(i,a,b) for(re i = a ; i <= b ; i ++)
#define der(i,a,b) for(re i = a ; i >= b ; i --)
#define snow ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int lcm(int a,int b){return a*b/gcd(a,b);}
typedef pair<int,int>PII;
typedef pair<int,string>PIS;
string s="\"!'*+-.08:=^_WTYUIOAHXVM|";
string s1="<\\[{(";
string s2=">/]})";
signed main(){
int n,m;
cin>>n>>m;
int cnt=0;
if(m>=36){
cout<<"-1"<<endl;
return 0;
}
string end="";
if(n%2){
m--;
end=s[cnt];
cnt++;
}
int cnt2=0;
while(cnt2<5&&m>=2){
m-=2;
end=s1[cnt2]+end+s2[cnt2];
cnt2++;
}
while(cnt<25&&m>=1){
m--;
end=s[cnt]+end+s[cnt];
cnt++;
}
if(end.size()>n){
cout<<"-1"<<endl;
}
else{
cnt=n-end.size();
while(cnt>=2){
cnt-=2;
end=end[0]+end+end[end.size()-1];
}
cout<<end<<endl;
}
return 0;
}