蓝桥杯—奇妙的数字(小明发现了一个奇妙的数字)
2016-02-28 16:09
127 查看
题目要求:
小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。
你能猜出这个数字是多少吗?
请填写该数字,不要填写任何多余的内容。
思路:
1. 定义变量x2,表示数字的平方,x3表示数字的立方。
2. 定义一个数组test[10],10元素分别代表(0-9)10个数出现的次数,然后取出x2和x3的每一位,用数组的10个元素来标识各个数出现的次数,每出现一次加1,最后再判断数组test的10个元素是不是1。
如果为1,则说明满足题的要求,如果非1,则说明不满足题的要求。
3. 没有时间和内存限制,就暴力循环吧,当然了代码效率越高肯定是越好的。
源代码如下:
运行结果:
注:本程序在devc++中通过编译运行。
小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。
你能猜出这个数字是多少吗?
请填写该数字,不要填写任何多余的内容。
思路:
1. 定义变量x2,表示数字的平方,x3表示数字的立方。
2. 定义一个数组test[10],10元素分别代表(0-9)10个数出现的次数,然后取出x2和x3的每一位,用数组的10个元素来标识各个数出现的次数,每出现一次加1,最后再判断数组test的10个元素是不是1。
如果为1,则说明满足题的要求,如果非1,则说明不满足题的要求。
3. 没有时间和内存限制,就暴力循环吧,当然了代码效率越高肯定是越好的。
源代码如下:
#include <iostream> #include <memory.h> const int N = 1001; bool solve(int a,int b) { int test[10]; memset(test,0,sizeof(test)); while(a) { test[a%10]++; a/=10; } while(b) { test[b%10]++; b/=10; } bool flag = true; for(int i=0;i<10;i++) { if(test[i] != 1) { flag = false; break; } } return flag; } int main() { using std::cout; int x2,x3; for(int i=10;;i++) { int x2 = i*i; int x3 = i*i*i; if(solve(x2,x3)) { cout<<i; break; } } return 0; }
运行结果:
注:本程序在devc++中通过编译运行。
相关文章推荐
- 蓝桥杯历届-猜年龄
- 设计模式
- PAT-1023 组个最小数
- Graspit 在ubuntu下的安装
- 二次型
- IOS UI-瀑布流(UICollectionView)
- 1076. Forwards on Weibo (30)
- Caffe softmax_layer.cpp学习
- hdu3555数位dp
- 安卓TextView中的文本加上横线或者下划线
- iptables的概念及使用
- uva 11388 最大公约数与最小公倍数的关系
- Ajax学习
- jquery ajax方式提交form并传递其他非表单中的参数,报表导出并自动下载,jquery ajax提交
- 自定义ViewGroup之卫星菜单
- 浅析伪罗伯特法所构造的任意阶数伪二次幻方中某一任意位置权值的一般求法
- 7. Reverse Integer
- 2.2 由摄像机读入数据
- Spring Bean装配-resouce
- 普林斯顿微积分读本:第 25 章 如何求解估算问题