2 条题解
-
1
#include<stdio.h> #include<string.h> long long int a[20]; void jiecheng(){//预处理1到12的阶乘然后存下 a[0]=1; for(int i=1;i<=12;i++){ a[i]=a[i-1]*i; } } int main() { int n,l; scanf("%d",&n); jiecheng();//预处理 char m[20]; while(n--){ scanf("%s",m); l=strlen(m); long long int sum=0; for(int i=0;i<l;i++){ int num=0; for(int j=i+1;j<l;j++){ if(m[j]<m[i]){ num++; } }sum+=num*a[l-i-1];//康托展开,可以看看讨论里有详解 }printf("%lld\n",sum+1);//康托展开从0名开始计数,题目从1开始 } return 0; }
信息
- ID
- 174
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- (无)
- 递交数
- 234
- 已通过
- 117
- 上传者