题目:奇妙的数字
小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。
你能猜出这个数字是多少吗?
请填写该数字,不要填写任何多余的内容。
答案:69
C++代码一:
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
bool isNum(int i){
bool flag[10] = {0};
int m = i*i, k, j;
do{
k = m%10;
if(flag[k] == 1)
return false;
flag[k] = 1;
m /= 10;
}while(m > 0);
m = i*i*i;
do{
k = m%10;
if(flag[k] == 1)
return false;
flag[k] = 1;
m /= 10;
}while(m > 0);
return true;
}
int main(){
for(int i = 50; ; i++){
if(isNum(i)){
cout << i;
break;
}
}
return 0;
}
C++代码二:
#include <set>
#include <iostream>
using namespace std;
int main()
{
int k, k2, k3;
for (k = 10; k < 100; ++k)
{
set<int> s;
k2 = k * k;
k3 = k2 * k;
while (k2)
{
s.insert(k2 % 10);
k2 /= 10;
}
while (k3)
{
s.insert(k3 % 10);
k3 /= 10;
}
if (10 == s.size())
break;
}
cout << k << endl;
return 0;
}
C++代码三:
#include <set>
#include <iostream>
using namespace std;
int main()
{
for (int k = 10, k2, k3; k < 100; ++k)
{
set<int> s;
k2 = k * k;
k3 = k2 * k;
do {
s.insert(k2 % 10);
} while (k2 /= 10);
do {
s.insert(k3 % 10);
} while (k3 /= 10);
if (10 == s.size())
{
cout << k << endl;
return 0;
}
}
return 0;
}
C++代码四:
#include <iostream>
using namespace std;
int main()
{
int k, k2, k3;
for(k = 10; k < 100; ++k)
{
int i, a[10] = {0};
k2 = k * k;
k3 = k * k2;
do {
++a[k2 % 10];
} while (k2 /= 10);
do {
++a[k3 % 10];
} while (k3 /= 10);
for (i = 0; i < 10; ++i)
if (a[i] != 1) break;
if (i == 10) break;
}
cout << k << endl;
return 0;
}
C++代码五:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int k, k2, k3, a[9] = {1,2,3,4,5,6,7,8,9};
for(k = 10; k < 100; ++k)
{
int i, a[10] = {0};
k2 = k * k;
k3 = k * k2;
do {
++a[k2 % 10];
} while (k2 /= 10);
do {
++a[k3 % 10];
} while (k3 /= 10);
for (i = 0; i < 10; ++i)
if (a[i] != 1) break;
if (i == 10) break;
}
cout << k << endl;
return 0;
}
C++代码六:
#include <iostream>
using namespace std;
int sum;
bool isOk(int n, int *v) {
while(n > 0) {
if(v[n%10])
return false;
v[n%10] = 1;
sum++;
n /= 10;
}
return true;
}
int main() {
for(int i = 10; ; i++) {
int v[10] = {0};
sum = 0;
if(isOk(i*i, v) && isOk(i*i*i, v) && sum == 10) {
cout << i;
return 0;
}
}
}