一、Description
A certain * contains a long hall of n cells, each right next to each other. Each cell has a *er 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 *ers, possibly zero, realizes that their cells are unlocked and the jailer is incapacitated. They immediately escape.
Given the number of cells, determine how many *ers escape jail.
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 *ers, possibly zero, realizes that their cells are unlocked and the jailer is incapacitated. They immediately escape.
Given the number of cells, determine how many *ers 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 *ers that escape when the * has n cells.
二、问题分析
此题属于小弟的消暑计划之一,通俗点就是水题。题意通俗易懂,解题没什么难度,要的就是这样的效果啊。哈哈哈!
三、Java代码
import java.util.Scanner; public class Main { public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
int times=cin.nextInt();
for(int i=0;i<times;i++){
int n=cin.nextInt();
boolean[] b=new boolean[n+1];
int num=0;
for(int l=1;l<=n;l++){
b[l]=true;
}
for(int m=1;m<=n;m++){
for(int j=2;j<=n;j++){
if(b[m] && m%j==0){
b[m]=false;
}else if( !b[m] && m%j==0){
b[m]=true;
}
}
}
for(int j=1;j<=n;j++){
if(b[j])
num++;
}
System.out.println(num);
}
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。