Bessie的大腦反應靈敏,仿佛真實地看到了她數過的一個又一個數。她開始注意每一個數碼(0 \ldots 90…9):每一個數碼在計數的程序中出現過多少次?
給出兩個整數 MM 和 NN (1 \leq M \leq N \leq 2 \times 10^91≤M≤N≤2×10
9
以及 N-M \leq 5 \times 10^5N?M≤5×10
5
),求每一個數碼出現了多少次。
輸入格式
第 11 行: 兩個用空格分開的整數 MM 和 NN。
輸出格式
第 11 行: 十個用空格分開的整數,分別表示數碼 0 \ldots 90…9 在序列中出現的次數。
輸入輸出樣例
輸入 #1復制
129 137
輸出 #1復制
1 10 2 9 1 1 1 1 0 1
#include<stdio.h>
#include<math.h>
#include<bits/stdc++.h>
int main()
{
int m,n,i,j,d,c;
scanf("%d %d",&m,&n);
int b[10]={0};
for(i=m;i<=n;i++)
for(j=1;j<=10;j++)
{
if(i<pow(10,j))
{
for(c=j-1;c>0;c--)
{
d=i%10;
i=i/10;
switch(d)
{
case 0:b[0]++;break;
case 1:b[1]++;break;
case 2:b[2]++;break;
case 3:b[3]++;break;
case 4:b[4]++;break;
case 5:b[5]++;break;
case 6:b[6]++;break;
case 7:b[7]++;break;
case 8:b[8]++;break;
case 9:b[9]++;break;
}
}
}
}
for(i=0;i<10;i++)
printf("%d",b[i]) ;
return 0;
}
uj5u.com熱心網友回復:
樓主的i在回圈體里被修改了,修改的地方在這里:d=i%10;
i=i/10;
主要是這句:i = i/10;修改了i,別忘了在最外層回圈里i回圈標量;
uj5u.com熱心網友回復:
#include<stdio.h>
#include<math.h>
#include<bits/stdc++.h>
int main()
{
unsigned int m, n, i, boundary = 2 * (unsigned int)pow(10, 9);
int digits[10] = {0}, tmp;
scanf("%u%u", &m, &n);
if (m > n)
return -1;
if ((m <= 0 || m > boundary)
|| (n <= 0 || n > boundary)) {
return -1;
}
for (i = m; i <= n; i++) {
tmp = i;
while (tmp) {
digits[tmp % 10]++;
tmp /= 10;
}
}
for(i=0;i<10;i++)
printf("%d ", digits[i]) ;
putchar(10);
return 0;
#if 0
int m,n,i,j,d,c;
int tmp;
scanf("%d %d",&m,&n);
int b[10]={0};
for(i=m;i<=n;i++) {
tmp = i;
while (tmp)
{
d = tmp%10;
tmp = tmp/10;
switch(d)
{
case 0:b[0]++;break;
case 1:b[1]++;break;
case 2:b[2]++;break;
case 3:b[3]++;break;
case 4:b[4]++;break;
case 5:b[5]++;break;
case 6:b[6]++;break;
case 7:b[7]++;break;
case 8:b[8]++;break;
case 9:b[9]++;break;
}
}
}
for(i=0;i<10;i++)
printf("%d: %d\n", i, b[i]) ;
#if 0
for(j=1;j<=10;j++)
{
if(i<pow(10,j))
{
tmp = i;
//for(c=j-1;c>0;c--)
while (tmp)
{
d = tmp%10;
tmp = tmp/10;
switch(d)
{
case 0:b[0]++;break;
case 1:b[1]++;break;
case 2:b[2]++;break;
case 3:b[3]++;break;
case 4:b[4]++;break;
case 5:b[5]++;break;
case 6:b[6]++;break;
case 7:b[7]++;break;
case 8:b[8]++;break;
case 9:b[9]++;break;
}
}
}
}
for(i=0;i<10;i++)
printf("%d: %d\n", i, b[i]) ;
return 0;
#endif
#endif
}
供參考~
uj5u.com熱心網友回復:
謝謝哈。不過我這個i 就是想要設定變的,為了單獨輸出 i的每一個數,進入選擇。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/175379.html
標籤:C語言
