poj1218——THE DRUNK JAILER

来源:互联网 发布:数据标签外在哪里设置 编辑:程序博客网 时间:2024/06/02 00:47

原题:

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

25100

Sample Output

210

 

源码:

//1218//题目大意:喝第一杯酒,每隔0个门,操控门一次,喝第二杯酒,每隔1个门,操控门一次...//统计开着的门的个数 #include<stdio.h>int main(){int n,i,j,k,a,count,counter;scanf("%d",&n);for(i=1;i<=n;i++){counter=0; scanf("%d",&a);for(k=1;k<=a;k++) //从第一个门开始统计, {count=0;//喝了第j杯酒的时候是否能被j整除,如果被整除,说明第j个门被操控了 for(j=1;j<=a;j++)  if(k%j==0) count++;//统计被操控的次数,即被开关的次数 if(count%2!=0)counter++; //如果开关次数能被2整除,说明这个门是开着的 }  printf("%d\n",counter);  }return 0;} 

 

源码 2:(模拟,找规律)

#include <iostream>#include <cmath>using namespace std;int main(){    int n, a, k;    cin >> n;    while(n--)    {        cin >> k;        a = sqrt(k);       cout << a <<endl;    }    return 0;}


 

 

原创粉丝点击