求助站外题!
  • 板块灌水区
  • 楼主iamsh
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/3/18 22:29
  • 上次更新2023/10/28 06:16:40
查看原帖
求助站外题!
656427
iamsh楼主2022/3/18 22:29

题目描述

给定两个数L和R,求L到R之间(包括L和R)有多少个数是“优雅”的。 称一个数是优雅的,当且仅当把这个数看成一个长度为n的字符串(没有前导零),n个字符中n-1个字符全相同,有且仅有一个字符不同。例如,33323、110都是优雅的,而9779、55555都不是优雅的。

输入格式

一行两个数L和R。

输出格式

一行一个数,表示L到R之间有多少个数是优雅的。

样例数据

input

110 133

output

13

样例解释 13个数是:110,112,113,114,115,116,117,118,119,121,122,131,133。

数据规模与约定

1<=L,R<=10^11

时间限制:1s

空间限制:256MB

这道题的标签是模拟,我用了一种时间复杂度非常高的解法,前面6个点都能对,但是后面4个点就超时了。救救我这个蒟蒻吧!!

60分代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int num[10] = {0};//计数用
	int L,R,x,n,cnt = 0,a;
	cin>>L>>R;
	for(int i = L;i <= R;i ++)
	{
		n = 0;
		x = i;
		while(x)//遍历数字,取出每一位,计数
		{
			n ++;
			a = x % 10;
			x = x / 10;
			num[a] = num[a] + 1;
		}
		for(int j = 0;j <= 9;j ++)
		{
			if(num[j] == n - 1)
			{
				cnt ++;
			}
			num[j] = 0;
		}
	} 
	cout<<cnt<<endl;
	return 0;
}
2022/3/18 22:29
加载中...