1.高斯日记
大数学家高斯有个好习惯:无论如何都要记日记。
他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210
后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?
高斯出生于:1777年4月30日。
在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。
高斯获得博士学位的那天日记上标着:8113
请你算出高斯获得博士学位的年月日。
答案的格式是:yyyy-mm-dd, 例如:1980-03-21
#include<stdio.h>
int YEAR(int year);//判断是否为闰年的函数
int YEAR(int year)
{
if(year%4==0&&year%100!=0||year%400==0)
return 1;
else
return 0;
}
int main ()
{
int n;//n为剩余天数
int year=1791,month,day=15;
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};//一年中每一个月天数
n=8113-5343;
for(month=12;n>30;month++)
{
if(YEAR(year))
{
a[1]=29;
}
else
{
a[1]=28;
} //判断是否需要更改二月份天数
if(month==13){
month=1;
year++;
}
n=n-a[month-1];// 依次减去每个月天数
}
if(YEAR(year))
{
a[1]=29;
}
else
{
a[1]=28;
}
if(day+n<a[month-1])//判断剩余天数n与day之和是否大于这个月总天数
{
day=day+n;
}
else
{
day=day+n-a[month-1];
month++;
}
printf("%d-%d-%d",year,month,day);
return 0;
}
2.排它平方数
小明正看着 203879 这个数字发呆。
原来,203879 * 203879 = 41566646641
这有什么神奇呢?仔细观察,203879 是个6位数,并且它的每个数位上的数字都是不同的,并且它平方后的所有数位上都不出现组成它自身的数字。
具有这样特点的6位数还有一个,请你找出它!
再归纳一下筛选要求:
1. 6位正整数
2. 每个数位上的数字不同
3. 其平方数的每个数位不含原数字的任何组成数位
答案是一个6位的正整数。
#include<stdio.h>
#include<math.h>
#define MAX 12
int Lenth(long long int y);//判断X的平方数的位数
int isDifferent(int a[]); //判断x是否有相同的位数
int Lenth(long long int y)
{
int lenth=1;
if(y<0) y=-y;
for(;y/10>0;y/=10)
{
++lenth;
}
return lenth;
}
int isDifferent(int a[])
{
int i,j;
for(i=0;i<6;i++){
for(j=i+1;j<6;j++){
if(a[i]==a[j])
return true;
}
}
return false;
}
int main()
{
int i,j,lenth;
long x;
long long int y,temp; //x为六位数的整数,y为x的平方数,temp为一个中间值 ,lenth为y的位数
int a[6],b[MAX];
for(x=123456;x<987654;x++)
{
y=pow(x,2);
for(i=0;i<6;i++) //将x每个位数的值存入数组a[]中
{
temp=x/pow(10,i);
a[i]=temp%10;
}
if(isDifferent(a))
continue;
if(x==203879)
continue;
lenth=Lenth(y);
for(i=0;i<lenth;i++) //将y每个位数的值存入数组b[]中
{
temp=y/pow(10,i);
b[i]=temp%10;
}
for(i=0;i<6;i++) //判断数组a与b中是否有相同值
{
for(j=0;j<lenth;j++)
{
if(a[i]==b[j])
break;
else
continue;
}
if(j!=lenth)
break;
}
if(i==6)
{
printf("%ld\n",x);
printf("%d * %d = %lld",x,x,y);
return 0;
}
}
}