渣渣起步阶段(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