1 条题解
-
0
C++ :
#include<stdio.h> #include<string.h> #define M 20123 int main() { int f[128]; char str[128]; int d[128]; int f1[128]; int i,j,n,r; for(f[0]=i=1;i<128;i++) f[i]=f[i-1]*10%M; for(f1[0]=0,i=1;i<128;i++) f1[i]=(f1[i-1]+i*f[i-1])%M; while(scanf("%s",str)!=EOF) { n=strlen(str); for(i=n-1;i>=0 && str[i]=='9';i--) str[i]='0'; if (i>=0) str[i]++; else { str[n]='0',str[n+1]='\0'; str[0]='1',n++; } r=0;d[n]=0; for(i=n-1;i>=0;i--) d[i]=(d[i+1]+(str[i]-'0')*f[n-1-i])%M; for(i=0;i<n;i++) { r=(r+(str[i]-'0')*f1[n-1-i]*2)%M; if (str[i]>'2') r=(r+f[n-1-i]*2)%M; else if (str[i]>'1') r=(r+f[n-1-i]+d[i+1])%M; else if (str[i]=='1') r=(r+d[i+1])%M; } printf("%d\n",r); } return 0; }
- 1
信息
- ID
- 1730
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者