c语言编程题 题目标题: 猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就
c语言编程题题目标题:猜年龄美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。一次,他参加某个重要会议,年轻...
c语言编程题
题目标题: 猜年龄
美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。
一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:
“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”
请你推算一下,他当时到底有多年轻。 展开
题目标题: 猜年龄
美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。
一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:
“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”
请你推算一下,他当时到底有多年轻。 展开
5个回答
展开全部
c语言追求的是程序执行时间效率,题目给出立方之后是四位数,可以人为确定年龄范围在10-21岁,至于为什么不确定六位数再精确一点,个人觉得没什么必要。这个编程的核心在于如何分辨这10个数字不同,我定义了一个函数,用数组加循环判断。以下是具体代码。
#include <stdio.h>
#include<stdlib.h>
#include<math.h>
int same(int a[10]);//判断10个数是否相等,相互不相等返回1
int many(int a);//判断一个整型数是几位数
main()
{
int a[10] ,i ,j ,s ,l; //a储存10个数字的数组,i年龄循环变量,j将数字存入数组,s储存四位数,l储存六位数
for(i=10;i<22;i++){
s=pow((double)i,3);
l=pow((double)i,4);
if(many(l)!=6)
continue;//如果不是六位数则退出当次循环
for(j=0;j<4;j++){
a[j]=s%10;
s=s/10;
}//存入四位数
for(j=4;j<10;j++){
a[j]=l%10;
l=l/10;
}//存入六位数
if(same(a))
printf("age=%d\n",i);//输出
}
system("pause");
}
int many(int a){
int i=0;
while(a>0){
a=a/10;
i++;
}
return i;
}
int same(int a[10]){
int i,j,flag=1;
for(i=0;i<10;i++){
for(j=i+1;j<10;j++){
if(a[i]==a[j])
flag=0;
}
}
return flag;
}
展开全部
Java程序:
public class Test {
public static void main(String[] args) {
int age;
int num1, num2;
int[] arr = new int[10];
int start = (int) Math.pow(10, 5.0/4);
int max = (int) Math.pow(10, 4.0/3);
int i;
for(age=start; age<max; age++) {
num1 = age * age * age;
num2 = age * age * age * age;
if(! (num1>=1000 && num1<10000) && !(num2>=10000 && num2<100000)) {
continue;
}
i = 0;
while(num1 > 0) {
arr[i++] = num1 % 10;
num1 /= 10;
}
while(num2 > 0) {
arr[i++] = num2 % 10;
num2 /= 10;
}
if(isDup(arr) == false) {
System.out.println(age);
}
}
}
//判断数组arr中是否存在相同的数
static boolean isDup(int[] arr) {
int i, j;
for(i=0; i<arr.length-1; i++) {
for(j=i+1; j<arr.length; j++) {
if(arr[j] == arr[i]) {
return true;
}
}
}
return false;
}
}
运行结果:
18
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
int main(){
int i,j,c[10]={0};
char a[11],b[10],v=1;
for(i=11;i<99;i++){
sprintf(a,"%d",i*i*i);
sprintf(b,"%d",i*i*i*i);
for(j=0;j<4;j++)
c[a[j]-48]=1;
for(;j<10;j++)
c[b[j]-48]=1;
for(j=0;j<10;j++){
if(c[j]==0)
v=0;
}
if(v==1&&strlen(a)==4&&strlen(b)==6)
break;
v=1;
}
printf("年龄为%d",i);
return 0;
}
int main(){
int i,j,c[10]={0};
char a[11],b[10],v=1;
for(i=11;i<99;i++){
sprintf(a,"%d",i*i*i);
sprintf(b,"%d",i*i*i*i);
for(j=0;j<4;j++)
c[a[j]-48]=1;
for(;j<10;j++)
c[b[j]-48]=1;
for(j=0;j<10;j++){
if(c[j]==0)
v=0;
}
if(v==1&&strlen(a)==4&&strlen(b)==6)
break;
v=1;
}
printf("年龄为%d",i);
return 0;
}
追答
C语言
他刚好成年
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
import java.util.*;
/*
* 暴力枚举
*
*
* 真题:年龄谜题
美国数学家维纳(N.Wiener)智力早熟,11 岁就上了大学。他曾在 1935~1936 年应
邀来中国清华大学讲学。一次,他参加某个重要会议,年轻的脸孔引人注目。于是
有人询问他的年龄,他回答说:“我年龄的立方是个 4 位数。我年龄的 4 次方是个
6 位数。这 10 个数字正好包含了从 0 到 9 这 10 个数字,每个都恰好出现 1 次。”
请你推算一下,他当时到底有多年轻。
*/
public class Main {
public static void main(String[] args) {
String s;
for (int i = 1; i < 100; i++) {
s = "" + i * i * i + i * i * i * i;
if (test(s) == false) {
continue;
}
System.out.println(i);
}
}
private static boolean test(String s) {
if (s.contains("0") && s.contains("1") && s.contains("2") && s.contains("3") && s.contains("4")
&& s.contains("5") && s.contains("6") && s.contains("7") && s.contains("8") && s.contains("9")) {
return true;
}
return false;
}
}
/*
* 暴力枚举
*
*
* 真题:年龄谜题
美国数学家维纳(N.Wiener)智力早熟,11 岁就上了大学。他曾在 1935~1936 年应
邀来中国清华大学讲学。一次,他参加某个重要会议,年轻的脸孔引人注目。于是
有人询问他的年龄,他回答说:“我年龄的立方是个 4 位数。我年龄的 4 次方是个
6 位数。这 10 个数字正好包含了从 0 到 9 这 10 个数字,每个都恰好出现 1 次。”
请你推算一下,他当时到底有多年轻。
*/
public class Main {
public static void main(String[] args) {
String s;
for (int i = 1; i < 100; i++) {
s = "" + i * i * i + i * i * i * i;
if (test(s) == false) {
continue;
}
System.out.println(i);
}
}
private static boolean test(String s) {
if (s.contains("0") && s.contains("1") && s.contains("2") && s.contains("3") && s.contains("4")
&& s.contains("5") && s.contains("6") && s.contains("7") && s.contains("8") && s.contains("9")) {
return true;
}
return false;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class Test {
public static void main(String[] args) {
for (int i = 1; i < 100; i++) {
String a = ""+(int) Math.pow(i, 3);
String b = ""+(int) Math.pow(i, 4);
if(a.length()==4&&b.length()==6&&f(a+b)){
System.out.println(i);
break;
}
}
}
private static boolean f(String str) {
for (int i = 0; i <= 9; i++) {
if(-1==str.indexOf(""+i)){
return false;
}
}
return true;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询