大聪明 • 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,非常快。
所以,我建议加强数据!!!
评论:
请先登录,才能进行评论