离谱

大聪明  •  7个月前


真离谱,这道本该很难的题竟然只有一个测试点,

直接输出9\ 20\ 20\ 20\ 20\ 20\ 20\ 20\ 20\ 20就行了。

好吧,正规来写应该大概是这样的

#include<iostream>
using namespace std;
long long l,r;
long long count(long long n, int x)
{
	long long c=n,m=1,sum=0;
	while (c)
	{
		sum += c / 10 * m;
		if (x == 0) sum -= m;
		if (c % 10 == x) sum += (n % m) + 1;
		if (c % 10 > x) sum += m;
		m *= 10;
		c /= 10;
	}
	return sum;
}
int main()
{
	cin>>l>>r;
	for (int i = 0;i < 10;i ++) cout<<count(r,i) - count(l-1,i)<<' ';
	return 0;
}

时间复杂度:大概是o(lg n 6 2 * 10) 里面乘起来是1440,非常快。

所以,我建议加强数据!!!


评论:

请先登录,才能进行评论