数组内查找

渣渣起步阶段(you got what you paid for)
方法一:(太麻烦了)
//美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,
//他回答说:“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”请你推算一下,他当时到底有多年轻。

#include<iostream>
#include<string.h>
#include<sstream>
using namespace std;
int c[10];
int k0,k1,k2,k3,k4,k5,k6,k7,k8,k9;

string Int_to_String(int n)  //int 转 string 

{

ostringstream stream;

stream<<n;  //n为int类型

return stream.str();

}
int main()
{
	
	int a,b,i;
	
	for(i=10;i<30;i++)
	  {
	  	a=i*i*i;
	  	b=i*i*i*i;
	  	
	  	if(9999>=a&&a>=1000&&100000<=b&&b<=999999)
	  	{
	  		//cout<<a<<endl<<b;
	  		string a1=Int_to_String(a);
	  		string b1=Int_to_String(b);
	  	   //string  a2 = strcat(a1,b1);
	  	   //cout<<a1<<endl<<b1;
	  	 //  break;
	  	     for(int j=0;j<4;j++)
	  	     {
	  	     	switch (a1[j])
	  	     	{
	  	     		case '0': k0++;break;
	  	     		case '1': k1++;break;
	  	     		case '2': k2++;break;
	  	     		case '3': k3++;break;
	  	     		case '4': k4++;break;
	  	     		case '5': k5++;break;
	  	     		case '6': k6++;break;
	  	     		case '7': k7++;break;
	  	     		case '8': k8++;break;
	  	     		case '9': k9++;break;
	  	     		
				   }
	  	     	  
			   }
	  	       for(int k=0;k<10;k++)
	  	     {
	  	     	switch (b1[k])
	  	     	{
	  	     		case '0': k0++;break;
	  	     		case '1': k1++;break;
	  	     		case '2': k2++;break;
	  	     		case '3': k3++;break;
	  	     		case '4': k4++;break;
	  	     		case '5': k5++;break;
	  	     		case '6': k6++;break;
	  	     		case '7': k7++;break;
	  	     		case '8': k8++;break;
	  	     		case '9': k9++;break;
	  	     		
				   }
	  	     	  
			   }
	  		
		  }
		  if(k0==1&&k1==1&&k2==1&&k3==1&&k4==1&&k5==1&&k6==1&&k7==1&&k8==1&&k9==1)
	             cout<<i;
	  }
	
	return 0;
}


方法二:

//美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,
//他回答说:“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”请你推算一下,他当时到底有多年轻。

#include<stdio.h>
#include<stdlib.h>
//判断数组里面每一个元素是否相同,相同返回1,不同返回0
int issame(char *a,int num)
{
	for(int i=0;i<num-1;i++)
	 {
	 	for(int j=i+1;j<num;j++)
	 	{
	 		if(a[i]==a[j])
	 		   return 1;
		 }
	 }
	 
	 return 0;
}
//判断数组1和数组2里面每一个元素是否相同,相同返回1,不同返回0
int issametwo(char *a,int num1 ,char *b,int num2)
{
    for(int i=0;i<num1;i++)
    {
    	
    	 for(int j=0;j<num2;j++)
           {
		      	if(a[i]==b[j])
		      	  return 1;
	     }
	}
     
return 0; 
} 
int main()
{
	char a[4]={0};
	char b[6]={0};
	int a1,b1;
	for(int k=10;k<30;k++)
	  {
	  	a1=k*k*k;
	  	itoa(a1,a,10);//把整形转变为数组类型char*
	  	if(issame(a,4))
	  	  continue;
	  	b1=a1*k;
	  	itoa(b1,b,10);
	  	if(issame(b,6))
	  	  continue;
	  	if(issametwo(a,4,b,6))
	  	  continue;
	  	else
	  	  printf("%d",k);
	  }
	return 0;
	
 } 
最后结果都为18
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值