《算法竞赛入门经典2ndEdition 》习题3-3 数数字(Digit Counting, Uva1225)

来源:互联网 发布:日语记单词软件 编辑:程序博客网 时间:2024/06/01 09:22

没找到什么更好的算法,这个也能过,就这样了。

不过话说uva居然不忽略行末空格,习惯了noip的忽略行末空格与文末回车,幸好uva给我的是PE,要不然估计死活都会改不出来。

#include <cstdio>#include <cstring>using namespace std;const int maxn = 10000;int num[maxn + 10][10];int main(){       int t, maxm = 0;  scanf("%d", &t);  while(t--)  {    int n;    scanf("%d", &n);    if(maxm < n)     {      for(int i = maxm+1; i <= n; i++)      {        int x = i;        for(int j = 0; j <= 9; j++)          num[i][j] = num[i-1][j];        while(x != 0)         {          num[i][x%10]++;          x /= 10;        }      }      maxm = n;    }    for(int i = 0; i < 9; i++)      printf("%d ", num[n][i]);    printf("%d\n", num[n][9]);//uva居然不忽略行末空格   }  return 0;}
1 0
原创粉丝点击