其他分享
首页 > 其他分享> > 1337 喝醉的狱卒

1337 喝醉的狱卒

作者:互联网

问题描述:某座监狱有一个长长的大厅,里面有n个牢房,每个牢房紧挨着。每个牢房里都有一个囚犯,而且每个牢房都锁着。
一天晚上,狱卒感到无聊,决定玩个游戏。在游戏的第一轮,他喝了一杯威士忌,然后跑下大厅解锁每个牢房。在第2回合中,他喝了一杯威士忌,然后跑下走廊,锁住其他牢房(牢房2、4、6……)。第三轮,他喝了杯威士忌,然后跑到大厅。他每隔3个囚室(囚室3、6、9……)就去一次。如果牢房被锁上了,他就打开它;如果门没锁,他就锁上。他这样重复了n轮,喝完最后一杯,就昏过去了。

一些囚犯,可能是零,意识到他们的牢房没有锁,狱卒失去了行动能力。他们立即逃跑。

已知牢房的数量,确定有多少囚犯越狱。

解题思路:一次AC了,找规律,1到N,可以整除N的就是N的因子(包括1)本身,因子数为奇数个的最后就可以逃出去。

#include <stdio.h>
#include <iostream>

using namespace std;


int main(){
   
    int N,T;
    while(cin>>T)
    {
    	 for(int m=0;m<T;m++)
    	{
    		int escape = 0;
    		cin>>N;
    		for(int i=1;i<=N;i++)
    		{
    			int mcount = 0;
    			for(int j=1;j<=N;j++)
    			{
    				if(i % j == 0)
    					++mcount;
				}
				if(mcount % 2 == 1)
					++escape;
			}
			cout<<escape<<endl;
		}
	}
	    return 0;
}

 

标签:狱卒,int,1337,include,囚犯,威士忌,牢房,喝醉
来源: https://blog.csdn.net/weixin_39627422/article/details/114003738