HDU5211——Mutiple

来源:互联网 发布:网络计划图关键线路 编辑:程序博客网 时间:2024/06/12 22:54

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5211

Mutiple


解题思路:

从右向左查看序列维护一个数组p[1..10000]表示该数上一次出现的位置遇到一个数就暴力查看它的所有倍数,取最小值即可时间复杂度为O(n/1+n/2++n/n)=O(nlogn)
#include<iostream>#include<cstdio>using namespace std;int main(){    int n;    int a[10010];    while(scanf("%d",&n)!=EOF)    {        int i,j,ans=0;        for(i=1;i<=n;i++)            scanf("%d",&a[i]);        for(i=1;i<=n;i++)            for(j=i+1;j<=n;j++)                if(a[j]%a[i]==0)                {                    ans+=j;                    break;                }        printf("%d\n",ans);    }    return 0;}


0 0
原创粉丝点击