zoukankan      html  css  js  c++  java
  • 权值

    【问题描述】:

    有一个长度为n的实数序列,,下标从1开始,其中第k个位置的实数为p · (sin(a · k + b) + cos(c · k + d) + 2),sin和cos采用弧度制,其中p,a,b,c,d均为给定的整数。你需要从这个序列中选择两个位置(可以相同),使前边的位置上的数字减去后边的位置上的数字最大。如果选择了两个相同的位置,那么差为0.

    【输入】:
    一行六个整数p,a,b,c,d,n。

    【输出】:
    一行一个实数表示最大的差值,保留六位小数。

    【输入输出样例】:
    weight.in weight.out
    100 432 406 867 60 1000 399.303813

    【数据范围】:
    对于30%的数据,1<=p,a,b,c,d<=1000,1<=n<=1000;
    对于全部的数据,1<=p,a,b,c,d<=1000,1<=n<=10^6。

    【解题思路】

    话说这个题并不需要什么思路。。。暴力循环枚举什么的就好了。不过一定要注意看题目!

    【源代码】

     1 program weight;
     2 var p,a,b,c,d,n,maxx,i:longint;
     3     ans,max:real;
     4     f,e:array[1..100000000] of real;
     5 begin
     6     assign(input,'weight.in');
     7     assign(output,'weight.out');
     8     reset(input);
     9     rewrite(output);
    10     read(p,a,b,c,d,n);
    11     for i:=1 to n do
    12     begin
    13         f[i]:=sin(a*i + b) + cos(c * i + d);
    14         if f[i]>max then
    15         begin
    16             max:=f[i];
    17             maxx:=i;
    18         end;
    19         e[i]:=f[maxx]-f[i];
    20         if e[i]>ans then ans:=e[i];
    21     end;
    22    writeln(ans*p:0:6);
    23    close(input);
    24    close(output);
    25 end.
  • 相关阅读:
    zzuli2470: 迷宫
    zzuli2460: 楼上真的是签到题
    zzuli2460: 楼上真的是签到题
    洛谷P1044 :栈(卡特兰数)
    洛谷P1044 :栈(卡特兰数)
    洛谷P1056:排座椅(贪心)
    代码块地址
    tabBarItem动画
    vim Podfile
    webView进度条
  • 原文地址:https://www.cnblogs.com/wuminyan/p/4743992.html
Copyright © 2011-2022 走看看