@[lyncis](/user/247155)
您用的是什么编译器?在提交时,用的是什么语言?我使用的是G++ 5.5.0,在此环境下,gets函数为已过时函数(因为其存在安全隐患),编译无法通过,因此我将您的代码适当做了修改如下:
```
#include <bits/stdc++.h>
//#include <stdio.h>
//#include <string.h>
using namespace std;
int m,n,i,j,k,b[10],sum=1,formm=0;
char a[10];
int factorial(int);
int main(){
scanf("%d\n",&m);
//gets(a);
cin.getline(a, 10);
n=strlen(a);
for(i=0;i<n;i++){
b[i]=a[i]-'0';
}
for(i=0;i<n;i++){
for(j=0;j<=i;j++){
if(b[j]<b[i])
formm++;
}
k=n-i-1;
sum+=(b[i]-1-formm)*factorial(k);
formm=0;
}
printf("%d",sum);
return 0;
}
int factorial(int x){
int y=1,j;
if(x==0){
y=1;
}
else {
for (j = 1; j <= x; j++) {
y *= j;
}
}
return y;
}
```
提交获得Accepted。您的问题应该是gets函数的原因导致的。建议使用cin、istringstream和cout处理输入输出。在我写的书第一章有详细的介绍,建议您参考使用。
有空请您访问我的 [CSDN博客](https://blog.csdn.net/metaphysis),里面有我写的一本书,内有编程竞赛相关内容的介绍,并附有对应的练习题目(题目源自UVa OJ),可免费下载此书的PDF版本:[《C++,挑战编程——程序设计竞赛进阶训练指南》](https://blog.csdn.net/metaphysis/article/details/90288252)。可以的话,还烦您向对编程感兴趣的朋友推荐一下我的博客和书,感谢!
by metaphysis @ 2020-04-03 15:26:21