zoukankan      html  css  js  c++  java
  • 我和她的月亮的距离

    【题目描述】

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

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

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

    艾莉欧第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)]
        暴力枚举即可。
    */
  • 相关阅读:
    kettle部分传输场景应用(每个作业都实验过啦)
    Java设计模式之《适配器模式》及应用场景
    Mysql笔记
    Spring知识点
    Java基础系列-浅拷贝和深拷贝
    前端-javascript知识点
    前端-jquery知识点
    Java基础系列-substring的原理
    Java设计模式之《抽象工厂模式》及使用场景
    Java基础系列-Enum深入解析
  • 原文地址:https://www.cnblogs.com/Ackermann/p/6055026.html
Copyright © 2011-2022 走看看