UVA - 1225 Digit Counting

题目大意:输入一个大于 0 小于 10000 的整数 n ,计算数列“ 1,2,3,…… ,n ”中每个数字的每位数中1~9出现的次数。
解题思路:用求余和除 10 来读取一个数字的每位数,用 switch-case语句来记录 1~9 每个数字出现的次数。

#include<iostream>
using namespace std;
int main() {
    int n , a[20][10] = {0}, m , i , j , t ;
     cin >> n;
        for( j = 0 ; j < n ; j++ ) {
          cin >> m;
          for( i = 1 ; i <= m ; i++ ) {
              t = i;
            do{              
              switch( t % 10 ){
              case 0: a[j][0] ++ ; break ;
              case 1: a[j][1] ++ ; break ;
              case 2: a[j][2] ++ ; break ;
              case 3: a[j][3] ++ ; break ;
              case 4: a[j][4] ++ ; break ;
              case 5: a[j][5] ++ ; break ;
              case 6: a[j][6] ++ ; break ;
              case 7: a[j][7] ++ ; break ;
              case 8: a[j][8] ++ ; break ;
              case 9: a[j][9] ++ ; break ;
              }
              t /= 10 ;
            }while(t != 0);
          }
        }
        for( j = 0 ; j < n ; j++ ) {
            for( i = 0 ; i < 9 ; i++ ) {
                cout << a[j][i] << " " ;
            }
            cout << a[j][9] << endl;
        }
        return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值