我和她的月亮的距离
【题目描述】
“一如既往的熙攘的树影,熟悉的嫩绿的街町。周围仿佛是凝固的纯静的时间,不停地流溢着澹澹的温婉的芬芳。一只午睡的小猫,一缕清凉的微风。如果我向往回家的路,那么,我是个引力浪漫主义者吗?
我把自行车停好。春日的阳光透过枝稍,让我想起她每天恬恬的微笑。但是今天,咦,艾莉欧呢?我知道,她向往遥远的星球,她一定是去了,那可以仰望夜幕的城市的海边。在一片朦胧的夜灯里,我能否辨识出,她,孤独的身影。”
“艾莉欧直盯着我的双眸,就连眼瞳颜色都像经过外星加工般深邃。她的眼睛泛着雪亮的光泽,透明澄澈,宛如与掺杂溶剂的饮料无法相容的水。”
艾莉欧第i秒就会发送信号强度为sin(i)的电波。
现已知连续N个信号的叠加强度P,询问艾利欧从第一次收到信号起,已经离去多长时间。
【输入描述】
第一行输入一个整数N,表示收集到N次信号;
第二行输入一个实数P,精确到小数点后18位,表示正弦信号的累加值。
【输出描述】
输出一个正整数T,表示答案。
【输入样例】
3
0.29361493957762066612412557420803
【输出样例】
2
【数据范围及提示】
样例可由sin(2)+sin(3)+sin(4)满足。
对于10%的数据,n ≤ 160;
对于30%的数据,n ≤ 2010;
对于60%的数据,n ≤ 20110414;
对于100%的数据,1 ≤ n ≤ 2011062220120208,T∈[1,67]。
源代码: #include<cmath> #include<iostream> using namespace std; int Ans; long long N; long double P,T=1e9; int main() { cin>>N>>P; //cin()的威力! for (int a=1;a<=67;a++) { double S,t; S=(cos(a-0.5)-cos(a+N-0.5))/sin(0.5)/2; t=abs(S-P); if (t<T) //巧妙的精度误差避免法。 { Ans=a; T=t; } } cout<<Ans; return 0; } /* 超神的学弟! 2sin(0.5)sin(n)=cos(n-0.5)-cos(n+0.5) sin(n)=[cos(n-0.5)-cos(n+0.5)]/[2sin(0.5)] sin(1)+sin(2)+...+sin(n)=[cos(0.5)-cos(n+0.5)]/[2sin(0.5)] sin(T)+sin(T+1)+...+sin(T+N-1)=[cos(T+0.5)-cos(T+N-0.5)]/[2sin(0.5)] 暴力枚举即可。 */