50分求调,WA #1 #4 #5 #6 #10 [P1246]
  • 板块P1246 编码
  • 楼主ZHANGGUIZHI
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/8/10 18:40
  • 上次更新2023/11/3 04:39:16
查看原帖
50分求调,WA #1 #4 #5 #6 #10 [P1246]
607952
ZHANGGUIZHI楼主2023/8/10 18:40

P1246

#include<bits/stdc++.h>
using namespace std;
string s;
int l,ans;
char num[]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
int c(int n,int m){
  if(n==0)
    return 1;
  int sum=1;
  for(int i=n;i>n-m;i--)
    sum*=i;
  for(int i=1;i<=m;i++)
    sum/=i;
  return sum;
}
int main(){
  cin>>s;
  l=s.size();
  if(l>6){
    cout<<"0"<<endl;
    return 0;
  }
  for(int i=1;i<l;i++)
    if(s[i]<=s[i-1]){
      cout<<"0"<<endl;
      return 0;
    }
  for(int i=1;i<l;i++)
    ans+=c(26,i);
  int a,lasta=0;
  for(int i=0;i<l;i++){
     a=s[i]-'a';
     if(lasta==a&&i!=0){
       lasta++;
       cout<<"la:"<<lasta<<endl;
       continue;
     }
     for(int j=lasta;j<a;j++)
       ans+=c(26-(num[j]-'a')-1,l-i-1);
     lasta=a+1;
  }
  ans++;
  cout<<ans<<endl;
  return 0;
}

2023/8/10 18:40
加载中...