蓝桥杯之奇妙的数字
2018-02-27 16:45
246 查看
问题描述:
奇妙的数字小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。你能猜出这个数字是多少吗?请填写该数字,不要填写任何多余的内容。暴力搜索,不过需要优化一下判断条件,找到不同的数字则标记数组对应的项(10个数对应10个位置)+1,判断最后是否每一项只为1,否则重置标记数组为0。#include <iostream>
#include <cstring>
#include <sstream>
using namespace std;
int a[10] = {0};
bool Check1(char c[])
{
for(int i = 0;i<10;i++)
{
if(c[i] == '0')
a[0]++;
if(c[i] == '1')
a[1]++;
if(c[i] == '2')
a[2]++;
if(c[i] == '3')
a[3]++;
if(c[i] == '4')
a[4]++;
if(c[i] == '5')
a[5]++;
if(c[i] == '6')
a[6]++;
if(c[i] == '7')
a[7]++;
if(c[i] == '8')
a[8]++;
if(c[i] == '9')
a[9]++;
}
for(int i = 0;i<10;i++)
{
if(a[i] != 1)
{
for(int i = 0;i<10;i++)
a[i] = 0;
return false;
}
}
return true;
}
bool Check(int k1,int k2)
{
stringstream s;
s<<k1;
stringstream ss;
ss<<k2;
string a = s.str();
string b = ss.str();
string c = a+b;
if(c.length() != 10)
return true;
else
{
char d[10];
strncpy(d,c.c_str(),c.length());
if(Check1(d))
return false;
else
return true;
}
}
int main()
{
int i = 0;
long long int k1,k2;
bool test = true;
while(test)
{
i++;
k1 = i*i;
k2 = k1*i;
test = Check(k1,k2);
}
cout<<i;
return 0;
}
相关文章推荐
- 蓝桥杯 3 奇妙的数字
- 蓝桥杯 奇妙的数字(java题解)
- 2015年蓝桥杯省赛A组C/C++:奇妙的数字
- 第六届蓝桥杯题目(java)-奇妙的数字
- 备战蓝桥杯(真题)第六届第九题“ 奇妙的数字”
- 2015年蓝桥杯A组C/C++第三题奇妙的数字
- 蓝桥杯 奇妙的数字
- 2016届蓝桥杯省赛A组奇妙的数字
- 2015-年蓝桥杯C-(A组)赛题-奇妙的数字
- 蓝桥杯历届-奇妙的数字
- 2015年蓝桥杯 A组 (奇妙的数字)
- 第六届蓝桥杯 软件类省赛真题 第六题:奇妙的数字
- 【第六届蓝桥杯】奇妙的数字
- 第六届蓝桥杯C++A组 奇妙的数字
- 2015第六届蓝桥杯 06 奇妙的数字 (java)
- 奇妙的数字--蓝桥杯
- 蓝桥杯- 奇妙的数字-java
- 蓝桥杯——奇妙的数字
- 第六届蓝桥杯A组C/C++ 第三题 奇妙的数字
- 蓝桥杯—奇妙的数字(小明发现了一个奇妙的数字)