哈利·波特与阿兹卡班囚徒 HZNUOJ2227

Posted csa01

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了哈利·波特与阿兹卡班囚徒 HZNUOJ2227相关的知识,希望对你有一定的参考价值。

Description

小天狼星打算逃出阿兹卡班了。众所周知,阿兹卡班是一个从来没人能够逃出的监狱。因为每个囚徒都是单独牢房,且牢房内设施简陋。然而法力高强的小天狼星发明了一个强大又神奇的魔法。阿兹卡班一共关押了n个囚徒,且这个魔法能够让摄魂怪进行n次操作牢房房门开关,且第i次操作只能把编号为i的倍数的牢房门打开或者关闭。现在我们知道囚徒数n。求n次操作后,牢房门打开的牢房有多少个?

Input

正整数n(1<n<=10^6)。多组输入,直到EOF结束。

Output

每行输出一个正整数,对应每个n。

 

思路:

1) 暴力破解 

  对于这样的问题 最先想到的当然是暴力循环了。  用一个装有1000000个元素的数组 代表这1000000扇牢门。暴力循环 每按一次魔法对应元素的值变换一次。(但是本题的n比较大,直接循环会超时)。 

2) 通过题意  我们知道 每次按的 都是次数的 倍数  所以 我们可以通过求公约数来实现

  例如: 编号为12 的灯牢门在 第1,2,3,4,,6,12次被操作而 12=1*12=2*6=3*4一共按了6次 (偶数次 )所以最后是关着的  。
      编号为9的牢门 在第1,3,9次被按下 一共按了奇数次 所以最后牢门是开着的。

3) 通过思路2我们知道了 最后亮灯的都是按了奇数次的灯。在求约数时  因为:N=a*b 有了a就有b 为了为奇数 a的等于b 。 所以 最后等亮着的是完全平方的数 。

1 #include<stdio.h>
2 #include<math.h>
3 int main(){
4     int n;
5     while(scanf("%d",&n)!=EOF){    
6         printf("%d
",(int)sqrt(n));
7     }
8 }

 

以上是关于哈利&#183;波特与阿兹卡班囚徒 HZNUOJ2227的主要内容,如果未能解决你的问题,请参考以下文章

关于《哈利·波特》电影的主演

求哈利波特所有的电影,要是有原文的文档就更好了。。。。

洛谷 P2559 [AHOI2002]哈利·波特与魔法石

洛谷——P2559 [AHOI2002]哈利·波特与魔法石

题解[AHOI2002]哈利·波特与魔法石

《哈利·波特》作者曾有"自杀念头"