📄 2674_1.cpp
字号:
//Accepted 2674 0MS 244K
#include<iostream>
#include<string>
using namespace std;
char s[1000];
void sw(char *list,int n)
{
int i,j;
for(i=0,j=n-1;i<j;i++,j--)
swap(list[i],list[j]);
}
int main()
{
int n,m,i,j,k,p,sum,t=0;
while(scanf("%d",&n)!=EOF)
{
if(n<41)
{
s[0]=1;
int i,j,p=0,sum,t=0;
for(j=1;j<=n;j++) //难点
{//j为每次要乘的数
for(i=0;i<=t;i++)//计算出结果的每一位
{//sum存放当前位的结果
sum=s[i]*j+p;
p=0;
if(sum>9)
{
s[i]=sum%10;
p=sum/10;
if(t==i)
{
t++;//t为结果长度
s[t]=0;//s[]存放结果
}
}
else
s[i]=sum;
}
}
for(i=t;i>=0;i--)
s[i] += '0';
s[t+1]='\0';
//sw(s,t+1);
int res = 0;
/*for(i = 0; s[i] != '\0'; i++)
res = (res*10+s[i]-'0')%2009;*/
for(i = t; i >=0; i--)
res = (res*10+s[i]-'0')%2009;
printf("%d\n", res);
}
else
printf("0\n");
}return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -