数列极差问题.docx

上传人:b****2 文档编号:20311357 上传时间:2023-04-25 格式:DOCX 页数:12 大小:17.44KB
下载 相关 举报
数列极差问题.docx_第1页
第1页 / 共12页
数列极差问题.docx_第2页
第2页 / 共12页
数列极差问题.docx_第3页
第3页 / 共12页
数列极差问题.docx_第4页
第4页 / 共12页
数列极差问题.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

数列极差问题.docx

《数列极差问题.docx》由会员分享,可在线阅读,更多相关《数列极差问题.docx(12页珍藏版)》请在冰豆网上搜索。

数列极差问题.docx

数列极差问题

数列极差问题

在黑板上写了N个正整数组成的一个数列,进行如下操作:

每次擦去其中的两个数a和b,然后在数列中加入一个数a×b+1,如此下去直至黑板上剩下一个数,在所有按这种操作方式最后得到的数中,最大的为max,最小的为min,则该数列的极差定义为M=max-min。

请你编程,对于给定的数列,计算极差。

输入

输入包含多个测试集。

每个测试集的第一个数N表示正整数序列长度(0<=N<=50000),随后是N个正整数。

N为0表示输入结束。

输出

每个结果一行

输入样例

3

1

2

3

0

输出样例

2

来源:

最新评论发表评论

您尚未登陆本站,不能发表评论,请登陆

评论人:

Eejit  发布时间:

2011-5-2715:

14:

55

表示与sea313081574想的一样,不知道对不对

评论人:

xuke  发布时间:

2011-5-2522:

42:

08

#include

#include

#define maxn 999999999

using namespace std;

int ff(int n)

{    if(n==0) return 1;

    int sum=0;

while(n)

{

    sum++;

    n=n/10;

}

return sum;

}

bool cmp(const int a,const int b)

{return a>b;

}

int main()

{

 int a[2002];

 int b[2002];

 int n;

 int temp;

 int  max,min;

 int i;

 while(cin>>n,n)

 {

   for(i=0 ;i

   {

       cin>>a[i];

       b[i]=a[i];

   }

   temp=n;

   while(temp>1)

   {  sort(a,a+n);

      a[1]=a[0]*a[1]+1;

      a[0]=maxn;

      temp--;

   }

   max=a[1];

   //cout<

   temp=n;

   while(temp>1)

   {

     sort(b,b+n,cmp);

     b[1]=b[0]*b[1]+1;

     b[0]=0;

     temp--;

   }

  min=b[1];

  // cout<

   ///////////////

  // cout<

   cout<

 }

return 0;

}

评论人:

sea313081574  发布时间:

2010-12-3010:

09:

29

如有一组数字 a1

则最大的就是

(((a1*a2+1)*a3+1)*a4+1.........)*an+1

最小的就是

(((an*an-1+1)*an-2+1)*an-3+1.........)*a1

那剩下来就简单了。

评论人:

mykeping  发布时间:

2010-5-1722:

39:

43

#include

void main()

{

    int max,min,z,i,a[50000],s;

    scanf("%d",&z);

        for(i=0;;i++)

        {

            scanf("%d",&a[i]);

            if(a[i]==0)

            {    s=i;

                break;

            }

        }

        max=a[0];

        min=a[1];

        for(i=0;i

        {

            if(max

                max=a[i];

            if(min>a[i])

                min=a[i];

        }

        printf("%d",max-min);

    

}

评论人:

mykeping  发布时间:

2010-5-1722:

39:

34

#include

void main()

{

    int max,min,z,i,a[50000],s;

    scanf("%d",&z);

        for(i=0;;i++)

        {

            scanf("%d",&a[i]);

            if(a[i]==0)

            {    s=i;

                break;

            }

        }

        max=a[0];

        min=a[1];

        for(i=0;i

        {

            if(max

                max=a[i];

            if(min>a[i])

                min=a[i];

        }

        printf("%d",max-min);

    

}

评论人:

zhichen  发布时间:

2010-5-1519:

07:

44

#include

void main()

{

    int max,min,z,i,a[50000],s;

    scanf("%d",&z);

        for(i=0;;i++)

        {

            scanf("%d",&a[i]);

            if(a[i]==0)

            {    s=i;

                break;

            }

        }

        max=a[0];

        min=a[1];

        for(i=0;i

        {

            if(max

                max=a[i];

            if(min>a[i])

                min=a[i];

        }

        printf("%d",max-min);

    

}

评论人:

zhichen  发布时间:

2010-5-1516:

14:

48

以下是极差概念,

指一组数据中最大数据与最小数据的差,在统计中常用极差来刻画一组数据的离散程度。

以及表示,R=Xmax-Xmin。

又称全距或范围误差。

反映的是变量分布的变异范围和离散幅度,在总体中任何两个单位的标准值之差都不能超过极差。

同时,它能体现一组数据波动的范围。

 

  如 

  12 12 13 14 16 21 

  这组数的极差就是 

  21-12=9

与题中不同,但是题中结果似乎是这么的来的,请版主提示

评论人:

leijf2010  发布时间:

2010-5-1421:

54:

01

我不知道自己的解法对不对,因为我还有点不明白这个题目的意思,如果是随便擦出其中的两个数,那么最后那个最大值和最小值是不是也要算上擦去两个数的乘积加1?

 如:

1 2 3,如果擦去的是1,2,那么加入的就是3。

如果擦去2,3,加入的值就是7,那么最大值和最小值之差就是6。

而不是2?

自己的一些想法,不知道对不对?

#include

#include

using namespace std;

#define N  50000

vectorb;

int main()

{

  int A[N];

  int n,j,k,l,m,sum;

  int max,min;

  int*p;

  cin>>n;

  for(int i=0;i

  { 

      if(cin>>A[i])

         b.push_back(A[i]);

  }

  

   k=b.size()-1;

   max=b[k];

   min=b[k];

  for(j=b.size()-1;j>0;j--)

  {   

      l=b[j];

      m=b[j-1];

      if(m>max)

          max=m;

      else 

          min=m;

      sum=l*m+1;

      p=&b[j];

      b.erase(p-1,p);

      b.push_back(sum);

      cout<

  }

   

  cout<

  return 0;

}

评论人:

hanhan0121  发布时间:

2010-3-723:

54:

41

#include

void main()

{

    int m,N,a[5000],b[5000],i,j,p,q,max,min,y,t;

    scanf("%d",&N);

      t=N;

    for(i=0;i

        scanf("%d",&a[i]);

     for(i=0;i

         b[i]=a[i];

    while(N>0)

    {

        m=a[0]; q=0;

        for(i=1;i

   

    if(a[i]>m)

    {

        m=a[i];

        q=i;

    }

      p=a[N-1]; a[N-1]=a[q]; a[q]=p;

      m=a[0]; q=0;

    for(i=0;i

          if(a[i]>m)

    {

        m=a[i];

        q=i;

    }

      p=a[N-1]; a[N-1]=a[q]; a[q]=p;

      a[N-2]=a[N-2]*a[N-1]+1;N=N-1;

    } 

      min=a[0];

      N=t;

     while(N>0)

    {

         m=b[0]; q=0;

        for(i=0;i

    if(b[i]

    {

        m=b[i];

        q=i;

    }

      p=b[N-1]; b[N-1]=b[q]; b[q]=p;

      m=b[0]; q=0;

    for(i=0;i

    if(b[i]

    {

        m=b[i];

        q=i;

    }

      p=b[N-1]; b[N-1]=b[q]; b[q]=p;

      b[N-2]=b[N-2]*b[N-1]+1;

      N=N-1;

    }

     max=b[0];

     printf("%d\n",(max-min));

}

评论人:

kkskssk  发布时间:

2008-11-2514:

09:

16

#include 

#define M 20

using namespace std;

int Max(int a[],int n)     //求最大值

{

    if (n==1)

    {

        return a[0];

    } 

    else

    {

        for(int j=0;j

        {

            for(int i=0;i

            {

                if (a[i]

                {

                    int p=a[i];

                    a[i]=a[i+1];

                    a[i+1]=p;

                }

            }

        }

        a[n-2]=a[n-2]*a[n-1]+1;

        return Max(a,n-1);    

    }

}

int Min(int a[],int n)     //求最小值

{

    if (n==1)

    {

        return a[0];

    } 

    else

    {

        for(int j=0;j

        {

            for(int i=0;i

            {

                if (a[i]>a[i+1])

                {

                    int p=a[i];

                    a[i]=a[i+1];

                    a[i+1]=p;

                }

            }

        }

        a[n-2]=a[n-2]*a[n-1]+1;

        return Min(a,n-1);    

    }

}

int main ()

{

    int n,max,min,lim,a[M],b[M];

    cout<<"请输入元素个数(n<="<

";

    cin>>n;

    for (int i=0;i

    {

        cin>>a[i];

        b[i]=a[i];

    }

    max=Max(a,n);

    min=Min(b,n);

    lim=max-min;

    cout<<"数据极值为:

"<

    return 0;

    

}

评论人:

神愚嘻嘻  发布时间:

2008-10-2421:

49:

33

program ex1;

var

   x,y,n,m,l,i,j,k,t,zong:

longint;

   a,b:

array[1..100,1..50000] of integer;

   min,max:

longint;

   shu:

array[1..100] of longint;

procedure sort(l,r:

longint);

var

   ii,jj,y,x:

longint;

begin

     ii:

=l; jj:

=r;

     x:

=a[k,(l+r) shr 1];

     repeat

           while a[k,ii]

=ii+1;

           while a[k,jj]>x do jj:

=jj-1;

           if ii<=jj then

           begin

                y:

=a[k,ii];a[k,ii]:

=a[k,jj];a[k,jj]:

=y;

                ii:

=ii+1; jj:

=jj-1;

           end;

     until ii>jj;

     if l

     if ii

end;

procedure sort1(l,r:

longint);

var

   ii,jj,y,x:

longint;

begin

     ii:

=l; jj:

=r;

     x:

=b[k,(l+r) shr 1];

     repeat

           while b[k,ii]

=ii+1;

           while b[k,jj]>x do jj:

=jj-1;

           if ii<=jj then

           begin

                y:

=b[k,ii];b[k,ii]:

=b[k,jj];b[k,jj]:

=y;

                ii:

=ii+1; jj:

=jj-1;

           end;

     until ii>jj;

     if l

     if ii

end;

{============main===========}

begin

     assign(input,'jj.in');reset(input);

     zong:

=0;

     repeat

           zong:

=zong+1;

           readln(shu[zong]);

           for i:

=1 to shu[zong] do readln(a[zong,i]);

           for i:

=1 to shu[zong] do b[zong,i]:

=a[zong,i];

     until shu[zong]=0;

     assign(output,'jj.out');rewrite(output);

     zong:

=zong-1;

     for k:

=1 to zong do

     begin

          min:

=0; max:

=0;

          sort(1,shu[k]); sort1(1,shu[k]);

          for j:

=1 to shu[k]-1 do

          begin

               a[k,j+1]:

=a[k,j+1]*a[k,j]+1;

               sort(j+1,shu[k]);

          end;

          max:

=a[k,shu[k]];

          for j:

=shu[k] downto 2 do

          begin

               b[k,j-1]:

=b[k,j-1]*b[k,j]+1;

               sort1(1,j-1);

          end;

          min:

=b[k,1];

          writeln(max-min);

     end;

     close(input);close(output);

end.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 兵器核科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1