问题标题: 酷町堂:3882 我有长辈

0
0
已解决
卞福睿
卞福睿
中级守护
中级守护
#include<bits/stdc++.h>
using namespace std;
int n,a[100005],b[100005],s,minn=9999999;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        if(a[i]<minn)
        minn=a[i];
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=a[i]/2;j>=minn;j-=a[i])
        b[j]=1;
    }
    for(int i=1;i<=n;i++)
    if(b[a[i]]==1)
    s++;
    cout<<s;
    return 0;
}

请问接下来怎么修改,样例过了,但是提交不对


0
已采纳
李博然
李博然
资深守护
资深守护

你的思路没看懂

我的ac思路:

输入n

输入n个数

建立bool数组b,b[a[i]]=1;

循环遍历a数组

int j=a[i]*2, j循环到100000,每次j增加a[i]

如果 b[j]==1 sum++;

cout<<sum;

代码

定义 

int sum,n;
int a[100005];
bool b[100005];

输入

    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        b[a[i]]=1;
    }

循环

 

    for(int i=1;i<=n;i++)
    {
        for(int j=a[i]*2;j<=100000;j+=a[i])
        {
            if(b[j]){
                sum++;
                break;
            }
        }
    }

输出 sum

求采纳

我要回答