普及C组第三题(8.12)

2304. 光芒 
(File IO): input:light.in output:light.out

时间限制: 1000 ms  空间限制: 

题目:

输入:                                                              

输出:

样例输入

5
1 1 0 1 1

样例输出

3

数据范围:

提示

按动 1、4 、5 号开关

思路:

这个神奇的题,让我又一次信了她的鬼话,输-1?啊,呸。还以为能拿到10分就先不做了。

这道题这要从后面往前搜,有没开的就按照题意给他开了。有个贪心思想,很简单。

CODE

#include<iostream>
#include<cstdio>
using namespace std;
int n,ans=0;
bool a[100001];
void change(int x)
{
    if(a[x]==true)
    a[x]=false;
    else
    a[x]=true;
}
int main()
{
    //freopen("light.in","r",stdin);
    //freopen("light.out","w",stdout);
    cin>>n;
    for(int i=1;i<=n;i++)
    cin>>a[i];
    for(int i=n;i>=1;i--)
    {
        if(a[i])
        {
            for(int j=1;j*j<=i;j++)
            {
                if(i%j==0)
                {
                    change(i/j);
                    change(j);
                    if(i/j==j)
                    change(j);
                }
            }
            ans++;
        }
    }
    cout<<ans;
}

完结撒花!!!

原文地址:https://www.cnblogs.com/YYCether666/p/11341081.html