LOADING

加载过慢请开启缓存,浏览器默认开启

daily 2

2023/5/9 daily

CF 285D

打表,我们发现n=16,所以我们可以先固定a=[1,…n],然后我们计算对应的B的数量,之后乘以n!

void solve(){
    vector<ll>a(17);
    a[1]=1;
    a[3]=3;
    a[5]=15;
    a[7]=133;
    a[9]=2025;
    a[11]=37851;
    a[13]=1030367;
    a[15]=36362925;
    vector<ll>fac(17);
    fac[0]=1;
    for(int i=1;i<fac.size();++i){
        fac[i]=(fac[i-1]*i%MOD);
    }
    int n;
    cin>>n;
    cout<<(a[n]*fac[n])%MOD<<'\n';
    return;
}

CF 279E

对于 ${000100}$来说,需要一次操作

对于 ${001110}$来说,需要两次操作

那么我们就按这个逻辑计算,每次把’1’前推即可

void solve(){
  string s;
  cin>>s;
  s='0'+s;
  int ans=0;
  for(int i=s.size()-1;i;--i){
    if(s[i]=='1'){
      if(s[i-1]=='1')s[i]='0',s[i-1]='*';
      else ++ans;
    }
    else if(s[i]=='*'){
      if(s[i-1]=='1')s[i]='0',s[i-1]='*';
      else ++ans,s[i]='0',s[i-1]='1';
    }
  }
  if(s[0]=='1')++ans;
  cout<<ans<<'\n';
  return;
}