大家应该都知道这道题怎么做吧?
代码很简单,用一个while循环输入,判定为42就break,结束。
#include<bits/stdc++.h>
using namespace std;
int main(){
int a;
while(1){
cin>>a;
if (a==42) break;
cout<<a<<endl;
}
return 0;
}
但是这道题的题面和背景非常有趣,让我给大家解释一下。
这道题的标题 来源于一本影响极为深远的,英国作家道格拉斯·亚当斯(Douglas Adams)的著名科幻作品(豆瓣链接)《银河系漫游指南》( The Hitchhiker's Guide to the Galaxy )。
在这本书里,地球被描绘为用以计算 “ 生命,宇宙和一切 ” 答案的终极计算机,而故事的开端来源于这台运行了上亿年的计算机因帝国要修建星际道路而被强拆了,而主人公和他的外星人朋友一起搭便车周游了银河系。
在后来的故事里(以下来源于百度百科),主人公亚瑟·邓特在玛格里西亚上被告知,地球其实只是一个实验。原来许多百万年前,老鼠其实是一种超智慧生物,它们建造了一部超级电脑深思,它们问超级电脑,生命、宇宙以及任何事情的终极答案是什么,经过一段长时间的计算,深思告诉老鼠的后人答案是42,深思解释它只能计算出答案是什么,但答案的原因必须由另一部更高智能的电脑才能解释,而该部电脑就是地球。
至于和这道题的联系,我可以过度解读一下,就是地球作为用于回答 “ 42 ” 意义的机器,(在某个平行宇宙中)被强拆了。大概这就是读入到 “ 42 ” 就要 “ break ” 的原因吧。
对于这个答案42,几十年来一直有读者试图解释,甚至有人写了一本书阐释它的意义。想要了解更多,建议在阅读完原作后阅读这篇评论坑非坑,宙非宙,芥子便是须弥 。
至于我的看法,我偷偷地告诉你,就是 " the Answer to Life, the Universe and Everything " 一共有42个字母(字符)。