HDU

来源:互联网 发布:淘宝店铺宝贝分类代码 编辑:程序博客网 时间:2024/06/18 18:32

题目大意:

给你一个数组 a ,让你求出数组 b 。b[ i ] 表示 a 数组中下标不能被 i 整除的数里面的最大值。

分析:

可能是一个比较投机取巧的方法吧,首先取出 a 数组里的最大值 a[ j ] ,那么 b 数组里,除了下标为 j 的因子的数以外,其他数的值都是 a[ j ] ,然后因为 j 的因子个数不多,我一个一个确认应该也不慢。

代码:

#include<bits/stdc++.h>#define maxn 100050using namespace std;int test=0;int n,a[maxn],b[maxn];int main(){    scanf("%d",&test);    while(test--)    {        int maxv=0,max_num=0;        scanf("%d",&n);        for(int i=1;i<=n;i++)        {            scanf("%d",&a[i]);            if(maxv<a[i])            {                maxv=a[i];                max_num=i;            }        }        for(int i=2;i<=n;i++)        {            if(max_num%i==0)            {                int max_t=0;                for(int j=1;j<=n;j++)                {                    if(j%i==0)continue;                    if(max_t<a[j])                    {                        max_t=a[j];                    }                }                b[i]=max_t;            }            else            {                b[i]=maxv;            }        }        printf("%d",b[2]);        for(int i=3;i<=n;i++)        {            printf(" %d",b[i]);        }        printf("\n");    }}
原创粉丝点击