HDOJ HDU 2053 Switch Game ACM 2053 IN HDU
Posted on 2010-08-07 15:20 MiYu 閱讀(666) 評論(0) 編輯 收藏 引用 所屬分類: ACM ( 模擬 ) 、ACM ( 水題 )MiYu原創, 轉帖請注明 : 轉載自 ______________白白の屋
題目地址:
http://acm.hdu.edu.cn/showproblem.php?pid=2053
題目描述:
題目分析:
毫無疑問 , 從后面的 Consider the second test case 可以看出, 這是一道模擬題, 根據題意直接模擬即可!
代碼如下:
但是這樣非常耗時, 有沒更簡單的方法? 當然有! 在草稿紙上模擬后得出: 只要是平方數就是 "1" ,否則為"0" , 所以
直接哈希,0MS過.
代碼如下:
題目地址:
http://acm.hdu.edu.cn/showproblem.php?pid=2053
題目描述:
Problem Description
There are many lamps in a line. All of them are off at first. A series of operations are carried out on these lamps. On the i-th operation, the lamps whose numbers are the multiple of i change the condition ( on to off and off to on ).
Input
Each test case contains only a number n ( 0< n<= 10^5) in a line.
Output
Output the condition of the n-th lamp after infinity operations ( 0 - off, 1 - on ).
Sample Input
1
5
Sample Output
1
0
Hint
hint
Consider the second test case:
The initial condition : 0 0 0 0 0 …
After the first operation : 1 1 1 1 1 …
After the second operation : 1 0 1 0 1 …
After the third operation : 1 0 0 0 1 …
After the fourth operation : 1 0 0 1 1 …
After the fifth operation : 1 0 0 1 0 …
The later operations cannot change the condition of the fifth lamp any more. So the answer is 0.
There are many lamps in a line. All of them are off at first. A series of operations are carried out on these lamps. On the i-th operation, the lamps whose numbers are the multiple of i change the condition ( on to off and off to on ).
Input
Each test case contains only a number n ( 0< n<= 10^5) in a line.
Output
Output the condition of the n-th lamp after infinity operations ( 0 - off, 1 - on ).
Sample Input
1
5
Sample Output
1
0
Hint
hint
Consider the second test case:
The initial condition : 0 0 0 0 0 …
After the first operation : 1 1 1 1 1 …
After the second operation : 1 0 1 0 1 …
After the third operation : 1 0 0 0 1 …
After the fourth operation : 1 0 0 1 1 …
After the fifth operation : 1 0 0 1 0 …
The later operations cannot change the condition of the fifth lamp any more. So the answer is 0.
題目分析:
毫無疑問 , 從后面的 Consider the second test case 可以看出, 這是一道模擬題, 根據題意直接模擬即可!
代碼如下:
MiYu原創, 轉帖請注明 : 轉載自 ______________白白の屋
#include <iostream>
#include <string.h>
using namespace std;
int arr[100001];
int main()
{
int n;
while(scanf("%d", &n) != EOF)
{
memset(arr, 0, sizeof(arr));
for(int i=1; i<=n; ++i)
for(int j=1; j<=n&&j*i<=n; ++j)
arr[j*i] = !arr[j*i];
printf("%d\n", arr[n]);
}
return 0;
}
#include <iostream>
#include <string.h>
using namespace std;
int arr[100001];
int main()
{
int n;
while(scanf("%d", &n) != EOF)
{
memset(arr, 0, sizeof(arr));
for(int i=1; i<=n; ++i)
for(int j=1; j<=n&&j*i<=n; ++j)
arr[j*i] = !arr[j*i];
printf("%d\n", arr[n]);
}
return 0;
}
但是這樣非常耗時, 有沒更簡單的方法? 當然有! 在草稿紙上模擬后得出: 只要是平方數就是 "1" ,否則為"0" , 所以
直接哈希,0MS過.
代碼如下:
MiYu原創, 轉帖請注明 : 轉載自 ______________白白の屋
#include <iostream>
using namespace std;
int F[100001] = { 1, 1 };
int main ()
{
for ( int i = 2; i * i <= 100000 ; ++ i )
{
F[ i * i ] = 1;
}
int N;
while ( cin >> N )
{
puts ( F[N] ? "1" : "0" );
}
return 0;
}
#include <iostream>
using namespace std;
int F[100001] = { 1, 1 };
int main ()
{
for ( int i = 2; i * i <= 100000 ; ++ i )
{
F[ i * i ] = 1;
}
int N;
while ( cin >> N )
{
puts ( F[N] ? "1" : "0" );
}
return 0;
}