苹果的面灯泡试题,手算有什么比较快的方法?

hongxinzha 2012-06-20 10:53:03
有100盏灯,编了序号1-100,全部打开,然后:
(1)编号为2的倍数的灯,开着的关上
(2)编号为2的倍数的灯,开着的关上,关着的打开
...
(3)编号为100的倍数的灯,开着的关上,关着的打开

这个问题如果自己编个小程序,很快就能算出答案是10

int main(void){
int bubbles[100]={0};
for(int n=1;n<=100;++n){
for(int b=1;b<=100;++b){
if(b%n==0){
int idx=b-1;
bubbles[idx]=!bubbles[idx];
}
}
}
int ret=0;
for(int c=0;c<100;++c){
ret+=bubbles[c];
}
printf("%d\n",ret);
return 0;
}


但是如果要手算,有没有比较好的方法能很快的算出答案呢? 谢谢!
...全文
159 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongxinzha 2012-06-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

就是找100以内有奇数个因子(不算1和自己)的数的个数
好像没啥好办法
[/Quote]

高手啊,高手,就是非同凡响。
ranchenwei 2012-06-21
  • 打赏
  • 举报
回复
“(2)编号为2的倍数的灯,开着的关上,关着的打开”

应该是编号为3的倍数的吧?
nice_cxf 2012-06-21
  • 打赏
  • 举报
回复
一个数可以分解为奇数个因子,必然为平方数,因此答案为10,1,4,9,16。。。。100是÷
zjs100901 2012-06-21
  • 打赏
  • 举报
回复
100开平方根即可。因为平方数的因子个数为奇数。
libralibra 2012-06-21
  • 打赏
  • 举报
回复
就是找100以内有奇数个因子(不算1和自己)的数的个数
好像没啥好办法

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧