神说,要补题

首先是A题。

A题需要找出某个数中是否有重叠的数字。

首先我们要把各数字分开。

memset(x,0,sizeof(x));

while (a>0)

{

if (x[a%10]==0) return false;

x[a%10]=0;

a=a/10

}

return true;

如果每一步都可以正常分开,那么就直接可以结束了。

如此简单的题为什么耗时6分钟?

原因有二;

其一是键盘太废。

其二是分离数字没有死记硬背。

我们来看下这个三位的代码 (消除了,这代码看起来太丑了

  while(t--)先进行表达式计算,再进行自减计算。

按照t算完后,把t减去1,再进行判断。。。知道2算完减去1到1,判断可执行表达式,用1执行表达式,再减去1到0,发现不可以,跳出循环。即t--是从t算到1

#include <bits/stdc++.h>
using namespace std;
int l, r, i;
bool a[9];

bool work(int i)
{
	memset(a, 1, sizeof(a));
	{
		while (i > 0)
		{
			if (!a[i % 10]) {
				return false;
			}
			a[i % 10] = 0;
			i = i / 10;
		}
		return true;
	}
}

int main()
{
	cin >> l >> r;
	for (int i = l; i <= r; i++)
	{
		if (work(i))
		{
			cout << i;
			return 0;
		}
	}

	cout << -1;
	return 0;
}

  我的其实不用过多解释了。。

01-15 18:29