我和她的月亮的距离

题目背景

一如既往的熙攘的树影,熟悉的嫩绿的街町。周围仿佛是凝固的纯静的时间,不停地流溢着澹澹的温婉的芬芳。一只午睡的小猫,一缕清凉的微风。如果我向往回家的路,那么,我是个引力浪漫主义者吗?

我把自行车停好。春日的阳光透过枝稍,让我想起她每天恬恬的微笑。但是今天,咦,艾莉欧呢?我知道,她向往遥远的星球,她一定是去了,那可以仰望夜幕的城市的海边。在一片朦胧的夜灯里,我能否辨识出,她,孤独的身影。

题目描述

艾莉欧说,她是宇宙人。想必,艾莉欧能够发出特定频率的脉冲吧。

艾莉欧从出走开始,第i秒就会发送信号强度为sin(i)的电波。我可以想办法检测到,连续N个信号的叠加强度P,那么,艾利欧从我第一次收到信号起,已经离去多长时间了呢。

输入输出格式

输入格式:

第一行一个整数N, 表示收集到N次信号。

第二行一个实数P,至少精确到小数点后18位,表示正弦信号的累加值。

输出格式:

一个不超过67的正整数T,在弧度制下满足sin(T)+sin(T+1)+…+sin(T+N-1)=P。

输入输出样例

输入样例#1:
3
0.29361493957762066612412557420803
输出样例#1:
2
(样例解释:可知sin(2)+sin(3)+sin(4)满足)

说明

『PS:pascal的选手,本题由于洛谷对pascal精度的缺陷,产生无法AC的情况,有可能你的程序能在本地AC。请尽量使用C++,造成的不便实在抱歉。』

对于10%的数据,n≤160;

对于30%的数据,n≤2010;

对于60%的数据,n≤20110414;

对于100%的数据,1≤n≤2011062220120208,数据保证T有较优解且T∈[1,67]。

深黑的海风中的一点清蓝。找到了,吗。

「怎么了?表哥。」艾莉欧直盯着我的双眸,就连眼瞳颜色都像经过外星加工般深邃。她的眼睛泛着雪亮的光泽,透明澄澈,宛如与掺杂溶剂的饮料无法相容的水。

Thanks for viewing this problem.

出题人:S_H_Y

因為題目給出了T∈[1,67],所以只需要用較快的方法求出1~n的sin值和即可。

那個較快的方法的手模:

  sin1+sin2+sin3+sin4+sin5+sin6+sin7+sin8+sin9+sin10+sin11+sin12+sin13+sin14+sin15

=2*cos(-0.5)(sin1.5+sin3.5+sin5.5+sin7.5+sin9.5+sin11.5+sin13.5)+sin15   x=15,y=1;

=2*cos(-0.5)(2*cos(-1)(sin2.5+sin6.5+sin10.5)+sin13.5)+sin15   x=7,y=2;

=2*cos(-0.5)(2*cos(-1)(2*cos(-2)*sin4.5)+sin10.5)+sin13.5)+sin15 x=3,y=4;

代碼實現:

 1 #include<cmath>
 2 #include<iostream>
 3 using namespace std;
 4 long long n;
 5 long double a,p,ans,bd;
 6 double fs(long long x,double y){//較快的方法。
 7 if(x==1) return sin(y/2+0.5);
 8 if(x&1) return 2*cos(-y/2)*fs(x/2,2*y)+sin(y*x-y/2+0.5);
 9 else return 2*cos(-y/2)*fs(x/2,2*y);
10 }
11 int main(){
12 cin>>n>>p;
13 ans=fs(n,1);
14 for(double i=2;i<=67;i++){
15 if(float(ans)==float(p)){cout<<i-1<<endl;return 0;}//數據變動比較大,即使捨棄一部分精度也沒關係。
16 ans+=sin(n+i-1);ans-=sin(i-1);
17 }
18 return 0;
19 }

這是道給物競大佬做的題。。。

题目来源:洛谷

原文地址:https://www.cnblogs.com/J-william/p/6054439.html