2015-第六届蓝桥杯大赛个人赛省赛(软件类)真题 C大学A组 3.奇妙的数字

题目描述

小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。
你能猜出这个数字是多少吗?
请填写该数字,不要填写任何多余的内容。

分析

先确定这个数的大致范围在 41 到 100(平方位数为 4 ,立方位数为 6),再进行暴力搜索(代码不够自信)

代码

#include<iostream>
using namespace std;
int main(){
    
    
	int p,l,a[11],ans;
	for(int i=41;i<100;i++){
    
    
		int b[11]={
    
    0,0,0,0,0,0,0,0,0,0},num=0;//每次循环一定要重新初始化计数数组以及 num !
		p=i*i;
		l=i*i*i;
		for(int j=0;j<4;j++){
    
    
			a[j]=p%10;
			p/=10;
		}
		for(int k=4;k<10;k++){
    
    
			a[k]=l%10;
			l/=10;
		}
		for(int e=0;e<10;e++){
    
    
			switch(a[e]){
    
    
				case 0:b[0]++;break;
				case 1:b[1]++;break;
				case 2:b[2]++;break;
				case 3:b[3]++;break;
				case 4:b[4]++;break;
				case 5:b[5]++;break;
				case 6:b[6]++;break;
				case 7:b[7]++;break;
				case 8:b[8]++;break;
				case 9:b[9]++;break;
			}
		}
		for(int m=0;m<10;m++){
    
    
			if(b[m]==1)
				num++;
		}
		if(num==10){
    
    
			ans=i;
			break;
		}
	}
	cout<<ans<<endl;
	return 0;
}

输出 69

猜你喜欢

转载自blog.csdn.net/interestingddd/article/details/114889772