挺有意思的三道智力题,学习与分享一下。。转于:http://blog.csdn.net/firefly_2002/article/category/1217507
一、一百个灯泡排成一排,第一轮将所有灯泡打开;第二轮每隔一个灯泡关掉一个,即排在偶数的灯泡都被关掉。第三轮每隔两个灯泡,将开着的灯泡关掉,关掉的灯泡打开。以此类推,第100轮的时候,还有几盏灯泡亮着?你知道答案吗?
别人的算法:
1.算法
1. 全亮
2. 2,4,6,8,10, ...反应 1,2定型 1亮
3. 3,6,9,12,15,18...反应 1,2,3定型 1亮
4. 4,8,12,16,20 ... 反应1,2,3,4定型1,4亮
5. 5,10,15,20 ..反应,1,2,3,4,5定型 1,4亮
6. 6,12,18.. 反应 1-6定型 1,4亮
7. 7,14,21,28 ... 1-7定型, 1,4亮
8. 8,16,24, 1-8定 1,4亮
9, 9,18,27, 1-9定 1,4,9亮
...
算到这有猜想,,平方数位灯亮,懒的研证了
1-10 ^2 = 1,4,9,16,25,36,49,64,81,100 共10灯亮...
根据提示已经可以看出,这个问题的实质就是找出有多少个灯泡的排位数拥有奇数个因子。每拥有一个因子,到这个因子数的那一轮时,这个灯泡就会被转换开关状态。
比如第1轮,因为所有100个数字都有因数1,所以全部被打开;第2轮,只有那些拥有2这个因子、能被2整除的数字的灯泡转换状态被关掉;第3轮,只有那些拥有3这个因子、能被3整除的数字的灯泡被转换状态。以此类推,如果灯泡排位数拥有奇数个因子,意味着它被打开和关上奇数次,那它就最终还是被打开的状态,如果灯泡排位数拥有偶数个因子,那它最终就是被关上的状态。
比如第1个灯泡有奇数个因子,第2个有偶数个(1,2),第3个有偶数个(1,3)第4个有奇数个(1,2,4),所以 第4个灯泡最后还是亮着的。
最终计算得出,所有排位数为平方数的灯泡最终还是亮着的,因为这些数都拥有奇数个因子,1,4,9,16……
在100以内,共有10个平方数,分别是1,4,9,16,25,36,49,64,81,100。这10个排位数的灯泡,最终都还是亮着。
我竟然算的是49。。。。
参照牛人:
(明天再想,真晚)
#include <stdio.h>
#define N 100
void main ()
{
int i,j,s=0,a[N];
for (i=0;i<N;i++)
a[i]=1;
for(i=1;i<=N;i++)
for(j=0;j<N;j=j+i)
a[j]=0-a[j];
for(i=0;i<N;i++)
{
if(a[i]==-1)
{printf ("%d\t",i+1);
s++;}
}
printf ("%d\n",s);
}
程序改完啦~~!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#include <stdio.h>
#define N 100
void main ()
{
int i,j,s=0,a[N+1];
for (i=0;i<=N;i++)
a[i]=1;
for(i=1;i<=N;i++)
for(j=0;j<=N;j=j+i)
a[j]=0-a[j];
for(i=0;i<=N;i++)
{
if(a[i]==-1)
{
printf ("%d\t",i);
s++;
}
}
printf ("%d\n",s);
}
法一:
算法简析:
为什么和一定是15呢?
设第一行 的和为X;第二行的和为X;第三行的和为X。
3X=1+2+3+..+9=45你等于是把这九个数都加了一遍。
可知:X=15再确定最中心的数是5.
设S=横着加第二行(中心行)+竖着加第二列(中心列)+斜着加两次(X)。
你发现中心数加了4次,其他的都加了一次。(中心数多加了3次)
S=4X=4*15=60=1+2+3+..+9+中心数*3
中心数=5
四个角不可能是奇数 。否则:斜着加会出问题
因为:假如左上是奇数,奇+5+右下数=15 右下必为奇数
此时: 假如右上为奇数,则左下必为奇数,最终 全部是奇数,
假如右上为偶数,则左下必为偶数,最终剩下的空格全是偶数。
共6个偶数,但偶数只有 2 4 6 8 四个 不够哦。
所以四个角 不可能是奇数。然后四个角代入2 4 6 8,自己凑吧。
方法二:
解以上不定方程式
设排列为
ABC
DEF
GHI
则
A+B+C=15
D+E+F=15
G+H+I=15
A+D+G=15
B+E+F=15
C+F+I=15
A+E+I=15
C+E+G=15
解以上不定方程式,就可以算出来
实际上,这是数独最古老的一种叫做河图,传说是从河里出来的龟身上的图案,具体你可以学习中国传统的文化部分.
数独的一般解法就是试验加经验
本题的记忆方法是偶角奇边坐心五.一线双角相对画.
三、
一个偶然的机会再次接触到了爱因斯坦谜题,一时来了兴致,用C#做了一个程序,看看到底是谁养鱼(大学毕业后接触过这道题,不过很遗憾,那时的我没有成为2%的人,所以不知道是谁在养鱼)?
这道迷题出自1981年柏林的德国逻辑思考学院,据说世界上只有2%的人能出答案,就连大名鼎鼎的爱因斯坦也成为此题大伤脑。爱因斯坦谜题的中文表述是这样的:
1. 有5栋5种颜色的房子
2. 每一位房子的主人国籍都不同
3. 这五个人每人只喝一个牌子的饮料,只抽一个牌子的香烟,只养一种宠物
4. 没有人有相同的宠物,抽相同牌子的烟,喝相同牌子的饮料
已知条件:
1. 英国人住在红房子里
2. 瑞典人养了一条狗
3. 丹麦人喝?
4. 绿房子在白房子的左边
5. 绿房子主人喝咖啡
6. 抽pallmall烟的人养了一只鸟
7. 黄房子主人抽dunhill烟
8. 住在中间房子的人喝牛奶
9. 挪威人住在第一间房子
10.抽混合烟的人住在养猫人的旁边
11.养马人住在抽dunhill烟人的旁边
12.抽bluemaster烟的人喝啤酒
13.德国人抽prince烟
14.挪威人住在蓝房子旁边
15.抽混合烟的人的邻居喝矿泉水
问题:谁养鱼?
黄色+挪威人+水+DUNHILL+猫
蓝色+丹麦人+茶+BLENOS+马
红色+英国人+牛奶+PALLMALL+鸟
绿色+德国人+咖啡+PRINCE+鱼
白色+瑞典人+啤酒+BLUEMASTER+狗