最后一个wa求助

P2524 Uim的情人节礼物·其之弐

@[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


|