POJ1218THE DRUNK JAILER 快速和一般方法两种解法
2014-03-10 18:26
465 查看
THE DRUNK JAILER
Description
A certain prison contains a long hall of n cells, each right next to each other. Each cell has a prisoner in it, and each cell is locked.
One night, the jailer gets bored and decides to play a game. For round 1 of the game, he takes a drink of whiskey,and then runs down the hall unlocking each cell. For round 2, he takes a drink of whiskey, and then runs down the
hall locking every other cell (cells 2, 4, 6, ?). For round 3, he takes a drink of whiskey, and then runs down the hall. He visits every third cell (cells 3, 6, 9, ?). If the cell is locked, he unlocks it; if it is unlocked, he locks it. He
repeats this for n rounds, takes a final drink, and passes out.
Some number of prisoners, possibly zero, realizes that their cells are unlocked and the jailer is incapacitated. They immediately escape.
Given the number of cells, determine how many prisoners escape jail.
Input
The first line of input contains a single positive integer. This is the number of lines that follow. Each of the following lines contains a single integer between 5 and 100, inclusive, which is the number of cells n.
Output
For each line, you must print out the number of prisoners that escape when the prison has n cells.
Sample Input
Sample Output
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 22155 | Accepted: 14012 |
A certain prison contains a long hall of n cells, each right next to each other. Each cell has a prisoner in it, and each cell is locked.
One night, the jailer gets bored and decides to play a game. For round 1 of the game, he takes a drink of whiskey,and then runs down the hall unlocking each cell. For round 2, he takes a drink of whiskey, and then runs down the
hall locking every other cell (cells 2, 4, 6, ?). For round 3, he takes a drink of whiskey, and then runs down the hall. He visits every third cell (cells 3, 6, 9, ?). If the cell is locked, he unlocks it; if it is unlocked, he locks it. He
repeats this for n rounds, takes a final drink, and passes out.
Some number of prisoners, possibly zero, realizes that their cells are unlocked and the jailer is incapacitated. They immediately escape.
Given the number of cells, determine how many prisoners escape jail.
Input
The first line of input contains a single positive integer. This is the number of lines that follow. Each of the following lines contains a single integer between 5 and 100, inclusive, which is the number of cells n.
Output
For each line, you must print out the number of prisoners that escape when the prison has n cells.
Sample Input
2 5 100
Sample Output
2 10
由于最大才为100,所以就算是用枚举一个个的去改变数值最后也能通过,但是如果好好思考下其实很简单,就是一个数学规律,或许大神和菜鸟的区别就在于此,虽然题目简单但是值得我们去思考和延伸..........
-----------------AC代码----------------------------------
菜鸟方法:
#include<stdio.h> #define MAX 101 int main() { int a[MAX],x,i,j,k,n,m,y; scanf("%d",&m); for(y=0;y<m;y++) { scanf("%d",&n); for(i=1;i<=n;i++) { a[i]=1; } k=1; while(k<=n) { for(j=k;j<=n;j+=k) { a[j]=-a[j]; } k++; } x=0; for(i=1;i<=n;i++) if(a[i]==-1) x++; printf("%d\n",x); } return 0; }
大神方法:
#include<stdio.h> #include<stdlib.h> #include<math.h> int main() { int n,x,i; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&x); printf("%d\n",(int)sqrt((double)x)); } system("pause"); return 0; }
相关文章推荐
- Android平台上捕获Back键的事件,Back键是手机上的后退键,一般的软件不捕获相关信息可能导致你的程序被切换到后台,而回到桌面的尴尬情况,在Android上有两种方法来获取该按钮的事件
- 分分钟实现梦想 —— 两种快速打造App的方法
- linux设备编译到内核一般有两种方法
- Python笔试题目:求最大的K个数子,解法一,最快速实现的方法
- win10怎么看体验指数?快速查看win10体验指数的两种方法
- win7系统快速打开命令提示符窗口的两种方法
- 在Java Web开发中,经常会用到跳转页面的方法,一般有下面两种方法。
- Photoshop使用选区和应用图像快速抠出手绘线稿图两种方法
- 两种简单的方式快速实现hashCode 和 equals方法
- win10系统如何快速切换桌面 两种方法快速切换win10桌面快捷键
- 两种方法让Docker帮您快速构建应用程序(本文以构建Haskell应用程序为例)
- 快速清除SQLServer日志的两种方法
- win7系统中最快速的安装字体的两种方法
- 详谈排序算法之交换类排序(两种方法实现快速排序【思路一致】)
- 快速排序的两种实现方法
- [转]快速清除SQL Server日志的两种方法
- 总结了两种绘画透明窗体的方法,都有些缺陷,能适用一般情况
- iOS同一项目多个Target的快速实现方法 - 两种使用场景详解
- 快速查看本机.NET Framework版本信息的两种常用方法
- 在web页面上快速生成二维码的两种实用方法