- ganggang的烦恼
- 2016-12-06 18:42:08 @
#include <cstdio>
using namespace std;
int c[1000000],n;
int main() {
c[0]=1;
int i,j,k,l=0,ans=0;
scanf("%d",&n);
for (k=2;k<=n;k++) {
for (i=0;i<=l;i++)
c[i]*=k;
for (i=0;i<=l;i++) {
c[i+1]+=c[i]/10;
c[i]%=10;
}
while (c[i]>10) {
c[i+1]+=c[i]/10;
c[i]%=10;
i++;
}
l=i;
while (c[l]==0&&l>0) l--;
}
for (i=0;i<=l;i++) ans+=c[i];
printf("%d",ans);
if (ans==2||ans==3) printf("T\n");
else printf("F\n");
return 0;
}
第三个点啊,怎么就过不了呢?
1 条评论
-
灰蛋6小时 LV 7 @ 2016-12-07 18:33:41
好吧我找出来那个错了。
把自己程序出的结果和别人打的表比了一下,n为27时会有一个10的进位,没错我在进位时把
c++
while (c[i]>=10)
写成
c++
while (c[i]>10)
希望不要再犯这么蠢的错误。。。
- 1