#include<stdio.h>
#include<string.h>
const int mod = 20123;
int len;
char str[1000];
int modValue(int n) {
return n % mod;
}
int calCount(int num) {
int k = len - 1;
int mul = 1;
int count = 0;
while (k >= 0) {
int lowNum = 0;
int curNum = 0;
int highNum = 0;
for (int i = 0; i < k; i++)
highNum = modValue(highNum * 10 + (str[i] - '0'));
for (int i = k + 1; i < len; i++)
lowNum = modValue(lowNum * 10 + (str[i] - '0'));
curNum = str[k] - '0';
if (curNum < num)
count = modValue(count + highNum * mul);
else if (curNum == num)
count = modValue(count + highNum * mul + lowNum + 1);
else
count = modValue(count + (highNum + 1) * mul);
mul = modValue(mul * 10);
k--;
}
return count;
}
int main() {
while (scanf("%s", str) != EOF) {
len = strlen(str);
printf("%d\n", modValue(calCount(1) + calCount(2)));
}
return 0;
}
题目链接:
http://ac.jobdu.com/problem.php?pid=1491
参考链接:
http://blog.csdn.net/u013027996/article/details/17126977