1252: [蓝桥杯2015初赛]奇妙的数字

题目描述

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

#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;

int main()
{
	int a[10];
	int i=30;
	while(1){
		memset(a,0,sizeof(a));
		int p=i*i;
		int l=i*i*i;
		while(p){
			a[p%10]++;
			p/=10;
		}
		while(l){
			a[l%10]++;
			l/=10;
		}
		int k=0;
		for(int j=0;j<10;j++){
			if(a[j]==1)k++;			
		}
		if(k==10){printf("%d",i);break;
		}
		else i++;
	}
	
}

最后答案69,当然直接输出就可以了

附上参考代码:

#include <iostream>  
#include <memory.h> 
using namespace std;
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()   
{  
	
	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;  
}

发布了4 篇原创文章 · 获赞 0 · 访问量 63

猜你喜欢

转载自blog.csdn.net/qq_44123044/article/details/104334059