zoukankan      html  css  js  c++  java
  • CodeForces

    传送门

    推导数组元素,有n个大于0的数组元素,若将数组元素自小到大排序,相邻数组元素差值相等,再给出其中的两个元素x,y,要求推导出的数组元素的最大值,尽可能小。

    输出可以是乱序的,并且数组中元素大于0,包括x和y

    Input
    5
    2 1 49
    5 20 50
    6 20 50
    5 3 8
    9 13 22
    
    Output
    1 49 
    20 40 30 50 10
    26 32 20 38 44 50 
    8 23 18 13 3 
    1 10 13 4 19 22 25 16 7 




    解题思路:

    /*
    看题面就知道要这构造一个等差数列
    例如 3 ------- 8
    设3 8之间有a个元素,那么就有a+1个差值(这个可以自己画一画),设相邻的差值是d,
    则有8-3=(a+1)*d,(8-3)/d-1=a;
    枚举差值d
    d=1时,a=4,加上3,8两个元素,总元素数量为4+2=6,超过了限制数量5,此种情况不行。
    d=2时,5%2!=0,因5无法整除2,此种情况不行。
    d=3时,5%3!=0,因5无法整除3,此种情况不行。
    d=4时,5%4!=0,因5无法整除4,此种情况不行。
    d=5时,a=0,考虑此种情况:
    两变扩展
    数组中:
    元素1是8,
    元素2是8-5=3,
    因3-5=-2,元素不能比3小了,只能比8大,
    元素3是8+5=13,
    元素4是13+5=18,
    元素5是18+5=23,
    */

    /*
    看题面就知道要这构造一个等差数列 
    例如 3 ------- 8
    设3 8之间有a个元素,那么就有a+1个差值(这个可以自己画一画),设相邻的差值是d,
    则有8-3=(a+1)*d,(8-3)/d-1=a;
    枚举差值d
    d=1时,a=4,加上3,8两个元素,总元素数量为4+2=6,超过了限制数量5,此种情况不行。
    d=2时,5%2!=0,因5无法整除2,此种情况不行。
    d=3时,5%3!=0,因5无法整除3,此种情况不行。
    d=4时,5%4!=0,因5无法整除4,此种情况不行。
    d=5时,a=0,考虑此种情况:
    两变扩展 
    数组中:
    元素1是8,
    元素2是8-5=3,
    因3-5=-2,元素不能比3小了,只能比8大,
    元素3是8+5=13,
    元素4是13+5=18,
    元素5是18+5=23,
    */
    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int maxn=1e5+10;
    int a[maxn];
    int main(){
        int t,x,y,d,n;
        cin>>t;
        while(t--){
            scanf("%d%d%d",&n,&x,&y);
            int d=y-x;
            int p;//相邻的差值 
            for(int i=1;i<=d;i++){
                if(d%i==0&&d/i-1+2<=n){
                    p=i;
                    break;
                }
            }
            int cnt=0;
            a[++cnt]=y;
            int pos=y;
            while(cnt<n){
                if(pos-p<=0){
                    break;
                }
                pos-=p;
                a[++cnt]=pos;
            }
            pos=y;
            while(cnt<n){
                pos+=p;
                a[++cnt]=pos;
            }
            for(int i=1;i<=cnt;i++){
                cout<<a[i]<<" ";
            }
            cout<<endl;
        } 
    }



  • 相关阅读:
    内存管理工具
    c语言目录操作总结
    重写strstr、strcpy、memcpy、memset、atof算法
    统计编码量工具
    hdu4348
    bzoj4358: permu
    bzoj2658: [Zjoi2012]小蓝的好友(mrx)
    bzoj2657: [Zjoi2012]旅游(journey)
    bzoj3583: 杰杰的女性朋友
    bzoj3673 bzoj3674可持久化并查集
  • 原文地址:https://www.cnblogs.com/lipu123/p/14077295.html
Copyright © 2011-2022 走看看