hdu 2053 Switch Game

    xiaoxiao2025-10-15  5

    Switch Game

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 15580    Accepted Submission(s): 9521 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.   Author LL 典型的开灯问题,刚开始模拟了一下,然后直接超时了,在这里附上模拟的代码,用的bool型 #include <stdio.h> #include <string.h> int main() { int i,j,n; bool a[100005]; while(~scanf("%d",&n)) { memset(a,0,sizeof(a)); for(i=1;i<=n;i++) for(j=i;j<=n;j+=i) { if(a[j]==0) a[j]=1; else a[j]=0; } printf("%d\n",a[n]); } return 0; } 后来看了看网上他们的博客,原来有规律,约数个数和他的平方根有关系,略微利用一下 #include <stdio.h> #include <math.h> int main() { int n; double t; while(~scanf("%d",&n)) { t=sqrt(1.0*n); if(t==(int )t) printf("1\n"); else printf("0\n"); } return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-1303171.html
    最新回复(0)