【发布时间】:2011-01-26 04:50:31
【问题描述】:
假设我想检查一个数字 n = 123 是否有重复的数字。我试过了:
#include <iostream>
using namespace std;
int main() {
int n = 123;
int d1 = n % 10;
int d2 = ( n / 10 ) % 10;
int d3 = ( n / 100 ) % 10;
if( d1 != d2 && d1 != d3 && d2 != d3 ) {
cout << n << " does not have duplicate digits.\n";
}
}
有没有更快的解决方案来解决这个问题?
更新
很抱歉不清楚。上面的代码是用 C++ 编写的,仅用于描述目的。我必须在 TI-89 中用 9 位数字解决这个问题。而且由于内存和速度的限制,我正在寻找一种最快的方法。
TI-89 只有几个条件关键字:
- 如果
- 如果...那么
- 何时(
- 为了...结束为了
- While ... EndWhile
- 循环...结束循环
- 自定义...结束自定义
谢谢,
陈
【问题讨论】:
-
由于您的解决方案仅限于三位数字,因此只需将具有重复数字的数字制作一个哈希表并检查该数字是否包含在其中。
-
您还需要处理少于三位数的数字(如果这是有效输入)。现在
n = 1将被拒绝,因为它有重复的数字(前导零)。 -
您在 TI-89 上使用哪种语言?
-
@belisarius:它不是真正的语言。它旨在仅解决数学问题。所以它没有数组。只有
for、if-else、do、while和算术。 -
@Chan 查看关于 TI-89 的语言建议ocf.berkeley.edu/~pad/faq/prog.html