神说,要补题
首先是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; }
我的其实不用过多解释了。。