【备战2014笔面试】关灯问题

这个问题比较简单,关键是循环的控制还有边界条件的选择

以下是代码

#include <iostream>  

/* 
Author : 俗人
Time : 2013/9/2 
description : 地铁换乘问题 

有n盏灯,按1,2,……,n(<=65535)的编号排好,每盏灯有个开关控制,刚开始灯都是亮着的
接个有n个人,第一个人将是1倍数的灯开关按一下,接着第二个人将是2倍数的灯开关按一下,
依此类推,第n个人将是n倍数的灯开关按一下,问最后有多少盏灯是亮着的?


样例输入:3
样例输出:1 

*/   


using namespace std;

int main(int argc, char *argv[])  
{  
    long light[65535];
    long n;
    
    cin >> n;
    for(long i = 1 ; i <= 65535 ;i++)
    {
             light[i] = 0;             
    }
    
    for(long s = 1 ; s <= n ;s++)    
    {             
             for(long i = 1 ; i <= n ;i++)
             {
                   if(i%s==0) light[i] = light[i]+1;
             }
                         
    }
    
    long count = 0;
    
    for(long i = 1 ; i <= n ;i++)
    {
             if(light[i]%2==1)
             count++;
                                    
    }
    
    cout<<count<<endl;
    
    
    system("PAUSE");    
    return EXIT_SUCCESS;  
} 


你可能感兴趣的:(C++)