1.标题:算年龄
英国数学家德摩根出生于19世纪初叶(即18xx年)。他年少时便很有才华。一次有人问他的年龄,他回答说:
“到了x的平方那年,我刚好是x岁”。
请你计算一下,德摩根到底出生在哪一年。
题中的年龄指的是周岁。
请填写表示他出生年份的四位数字,不要填写任何多余内容。
#include<iostream>
using namespace std;
int main()
{
for(int i=35;i<48;i++)
{
cout<<i<<": "<<i*i<<" ";
int year=i*i-i;
cout<<year<<endl;
}
return 0;
}
运行结果:
因为是19世纪初叶,所以是1806
2.题目:猜算式
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int check(int i,int * f) //f数组表示十个数字的个数
{
while(i>0) //判断i式子内各数字的个数,存入数组下标所对应的数组,即f[10]内。
{
if(f[i%10]==2) //只要f[a]不等于a,则f[a]++;
{
return 0;
}
f[i%10]++;
i/=10;
}
return 1;
}
int main()
{
for(int i = 100; i<=999; i++)
{
for(int j = 100; j<=999; j++)
{
int f[10] = {0}; //f数组表示十个数字的个数
int a = i*(j%10); //第一个数乘第二个数的个位
int b = i*(j/10%10);//第一个数乘第二个数的十位
int c = i*(j/100); //第一个数乘第二个数的百位
if(a>=1000||b>=1000||c>=1000||i*j>=100000||a<100||b<100||c<100)
continue;
//i,j,a,b,c,i*j
if(check(i,f)&&check(j,f)&&check(a,f)&&check(b,f)&&check(c,f)&&check(i*j,f))
{//依次判断六个式子内各数字出现的个数是否等于2
printf("%d %d %d %d %d %d",i,j,a,b,c,i*j);
}
}
}
return 0;
}
运行结果: