欢迎光临
我们一直在努力

打卡信奥刷题(3482)用C++实现信奥题 P10679 『STA - R6』spec

P10679 『STA – R6』spec

题目描述

定义一个实数

α

\\alpha

α 的谱

Spec

⁡

(

α

)

\\operatorname{Spec}(\\alpha)

Spec(α) 是整数组成的一个无限长的序列

⌈

α

⌉

−

1

,

⌈

2

α

⌉

−

1

,

⌈

3

α

⌉

−

1

,

⋯

\\lceil\\alpha\\rceil-1,\\lceil2\\alpha\\rceil-1,\\lceil3\\alpha\\rceil-1,\\cdots

⌈α⌉−1,⌈2α⌉−1,⌈3α⌉−1,⋯。例如,

3

5

\\frac35

53​ 的谱的开头部分是

0

,

1

,

1

,

2

,

2

,

3

,

4

,

⋯

0,1,1,2,2,3,4,\\cdots

0,1,1,2,2,3,4,⋯。

现在给定

n

n

n 个整数

x

1

,

⋯
 

,

x

n

x_1,\\cdots,x_n

x1​,⋯,xn​,你要找到最大的实数

α

\\alpha

α,使得对于每个元素

x

i

x_i

xi​ 都有

x

i

x_i

xi​ 在

Spec

⁡

(

α

)

\\operatorname{Spec}(\\alpha)

Spec(α) 中出现过。

输入格式

第一行一个正整数

n

n

n。

第二行

n

n

n 个正整数

x

1

,

x

2

,

⋯
 

,

x

n

x_1,x_2,\\cdots,x_n

x1​,x2​,⋯,xn​。

输出格式

一行,表示最大的

α

\\alpha

α。你的答案与标准答案的绝对误差低于

10

−

5

10^{-5}

10−5 即判为正确。

输入输出样例 #1

输入 #1

3
1 2 3

输出 #1

1.3333333

输入输出样例 #2

输入 #2

3
2 4 7

输出 #2

2.5000000

说明/提示

本题采用捆绑测试。

数据范围:

  • Subtask 0 (10pts):

    n

    ,

    x

    i

    ≤

    100

    n,x_i\\le 100

    n,xi​≤100。

  • Subtask 1 (15pts):合法答案构成一段连续区间。
  • Subtask 2 (25pts):每个

    x

    i

    x_i

    xi​ 都是 2 的非负整数次幂。

  • Subtask 3 (50pts):无特殊限制。

对于全部数据,

1

≤

n

,

x

i

≤

1000

1\\le n,x_i\\le 1000

1≤n,xi​≤1000。

C++实现

#include<bits/stdc++.h>
using namespace std;
int a[10000];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+1+n);
n=unique(a+1,a+1+n)–a–1;
double opt=double(a[n]+1)/n;
for(;opt>=0;opt-=0.00000100) {
int r=1,l=1;
while((int)(ceil(opt*r*1.0000000)–1)<=a[l]&&l<=n) {
if((int)(ceil(opt*r*1.0000000)–1)==a[l])l++;
r++;
} if(l>n) {
printf("%.7f",opt);
return 0;
}
}
return 0;
}

在这里插入图片描述

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

赞(0)
未经允许不得转载:171主机测评 » 打卡信奥刷题(3482)用C++实现信奥题 P10679 『STA - R6』spec
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址