1 条题解

  • 0
    @ 2025-4-12 21:47:20

    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
    上传者