标题: 排列序数
X星系的某次考古活动发现了史前智能痕迹。
这是一些用来计数的符号,经过分析它的计数规律如下:
(为了表示方便,我们把这些奇怪的符号用a~q代替)
abcdefghijklmnopq 表示0
abcdefghijklmnoqp 表示1
abcdefghijklmnpoq 表示2
abcdefghijklmnpqo 表示3
abcdefghijklmnqop 表示4
abcdefghijklmnqpo 表示5
abcdefghijklmonpq 表示6
abcdefghijklmonqp 表示7
.....
在一处石头上刻的符号是:
bckfqlajhemgiodnp
请你计算出它表示的数字是多少?
请提交该整数,不要填写任何多余的内容,比如说明或注释。
分析:康拓展开
答案:22952601027516
代码:
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long LL;
char s[20];
LL jieceng(int j){
if(j==0)return 1;
LL cnt=1;
for(int i=1;i<=j;i++)
cnt*=i;
return cnt;
}
int main(){
while(scanf("%s",s)==1){
LL sum=0;
int len=strlen(s);
for(int j=0;j<len;j++){
LL jiec=jieceng(16-j);
int t=s[j]-'a';
for(int i=0;i<j;i++)
if(s[i]<s[j])t--;
sum+=t*jiec;
}
printf("%lld\n",sum);
}
return 0;
}