void statNumber(int n) {
int i, t;
int count[10] = {0};
for(i = 1; i <= n; i++) {
t = i;
while(t) {
count[t]++;
t/=10;
}
}
for(i = 0; i < 10; i++) {
printf("%d/n", count[i]);
}
}
void statNumber(int n) {
int m, i, j, k, t, x, len = log10(n);
char d[16];
int pow10[12] = {1}, count[10] = {0};
for(i = 1; i < 12; i++) {
pow10[i] = pow10[i-1] * 10;
}
sprintf(d, "%d", n);
m = n+1;
for(i = 0; i <= len; i++) {
x = d[i] - '0';
t = (m-1) / pow10[len-i];
count[x] += m - t * pow10[len-i];
t /= 10;
j = 0;
while(j <= x-1) {
count[j] += (t + 1) * pow10[len-i];
j++;
}
while(j < 10) {
count[j] += t * pow10[len - i];
j++;
}
count[0] -= pow10[len-i]; /* 第i个数位上前10^i个0是无意义的 */
}
for(j = 0; j < 10; j++) {
printf("%d/n", count[j]);
}
}
void statNumber_iterative(int n) {
int len, i, k, h, m;
int count[10] = {0};
int pow10[12] = {1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000};
char d[16];
len = log10(n); /* len表示当前数字的位权 */
m = len;
sprintf(d, "%d", n);
k = 0; /* k记录当前最高位数字在d数组中的下标 */
h = d[k] - '0'; /* h表示当前最高位的数字 */
n %= pow10[len]; /* 去掉n的最高位 */
while(len > 0) {
if(h == 0) {
count[0] += n + 1;
h = d[++k] - '0';
--len;
n %= pow10[len];
continue;
}
for(i = 0; i < 10; i++) {
count[i] += h * len * pow10[len-1];
}
for(i = 0; i < h; i++) {
count[i] += pow10[len];
}
count[h] += n + 1;
--len;
h = d[++k] - '0';
n %= pow10[len];
}
for(i = 0; i <= h; i++) {
count[i] += 1;
}
/* 减去前导0的个数 */
for(i = 0; i <= m; i++) {
count[0] -= pow10[i];
}
for(i = 0; i < 10; i++) {
printf("%d/n", count[i]);
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有