P1554 梦中的统计

196 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 题目背景 Bessie 处于半梦半醒的状态。过了一会儿,她意识到她在数数,不能入睡。

题目描述 Bessie的大脑反应灵敏,仿佛真实地看到了她数过的一个又一个数。她开始注意每一个数码(0 \ldots 90…9):每一个数码在计数的过程中出现过多少次?

给出两个整数 MM 和 NN (1 \leq M \leq N \leq 2 \times 10^91≤M≤N≤2×109 以及 N-M \leq 5 \times 10^5N−M≤5×105),求每一个数码出现了多少次。

输入格式 第 11 行: 两个用空格分开的整数 MM 和 NN。

输出格式 第 11 行: 十个用空格分开的整数,分别表示数码 0 \ldots 90…9 在序列中出现的次数。

输入输出样例 输入 #1复制

129 137 输出 #1复制

1 10 2 9 1 1 1 1 0 1

#include<iostream>
using namespace std;
int main()
{
	int x;
	int a[40][40]={0}, i = 1, j = 2;
	cin >> x;
	a[0][x / 2] = 1;
	int m, n;
	for (i = 2; i <= x * x; i++)
	{
		
		for (m = 0; m<x-1; m++)
		{
			if (a[0][m] == j - 1)
			{
				a[x - 1][m + 1] = j;
				j++;
			}
		}
		if (i != j)
			continue;
		for (m = 1; m < x; m++)
		{
			if (a[m][x-1] == j - 1)
			{
				a[m-1][0] = j;
				j++;
			}
		}
		if (i != j)
			continue;
		if (a[0][x - 1] == j - 1)
		{
			a[1][x - 1] = j;
			j++;
			continue;
		}
		 
		for (m = 1; m < x ; m++)
		{
			for (n = 0; n < x - 1; n++)
			{
				if (a[m][n] == j - 1)
				{
					if (a[m - 1][n + 1] == 0)
						a[m - 1][n + 1] = j;
					else
						a[m + 1][n] = j;
					j++;
				}
			}
		}
	}
	for (m = 0; m < x ; m++)
	{
		for (n = 0; n < x ; n++)
		{
			cout << a[m][n] << " ";
		}
		cout << endl;
	}
	return 0;
}