统计次数poj1218——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

2
5
100

    Sample Output

2
10

 

    源码:

//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;
}

    
 

 

文章结束给大家分享下程序员的一些笑话语录: 小沈阳版程序员~~~ \n程序员其实可痛苦的了......需求一做一改,一个月就过去了;嚎~ \n需求再一改一调,一季度就过去了;嚎~ \n程序员最痛苦的事儿是啥,知道不?就是,程序没做完,需求又改了; \n程序员最最痛苦的事儿是啥,知道不? 就是,系统好不容易做完了,方案全改了; \n程序员最最最痛苦的事儿是啥,知道不? 就是,系统做完了,狗日的客户跑了; \n程序员最最最最最痛苦的事儿是啥,知道不? 就是,狗日的客户又回来了,程序给删没了!

posted @ 2013-05-04 21:07  坚固66  阅读(130)  评论(0编辑  收藏  举报