现在的位置: 首页 > 综合 > 正文

USCAO 3.1.3

2014年03月17日 ⁄ 综合 ⁄ 共 584字 ⁄ 字号 评论关闭

    求第N个大的数那就排着乘,一直乘到第N个大的数就好了

#include<cstdio>
#include<iostream>
#include<string.h>
using namespace std;

int main()
{
 freopen("humble.in","r",stdin);
 freopen("humble.out","w",stdout);
 int n,k,j,num[101],index[101],min,max,tail=0;
 long long hum[100001];//存储正整数集合
 cin>>k>>n;
 for(int i=1;i<=k;i++)
  cin>>num[i];
 for(int i=1;i<=k;i++)
  index[i]=0;//记录每个数向前走的记录
 hum[0]=1;
 while(n)
 {
  min=2147483647;
  for(int i=1;i<=k;i++)
  {
   j=index[i];
   while(num[i]*hum[j]<=hum[tail])
    j++;
   index[i]=j;
   if(num[i]*hum[j]<min)
    min=num[i]*hum[j];
  }
  hum[++tail]=min;
  n--;
 }
 cout<<hum[tail]<<endl;
 return 0;
}

抱歉!评论已关闭.