zoukankan      html  css  js  c++  java
  • 数论 UVALive 2911

    这道题是一道数论题。

    题目的意思是告诉m、p、a、b,并且告诉你xi满足的两个条件。让你求出 xp1 + xp2 +...+ xp的最大值(其中p<=12,切p是偶数)。

    这里需要对于xi所满足的两个条件做一下变换,就是在等式和不等式的两边同时乘上一个sqrt(a),这样在处理数据上会比较方便。

    然后,我们分析,由于p是偶数,所以xi的p次方这样一个值一定是正数,那么要求出这道题目的答案就需要让所有xi尽量取绝度值大的数。也就是让xi尽量取sqrt(a),但是在规定范围内可能不能让所有xi都取sqrt(a),

    那么,在sqrt(a)*b的值没有sqrt(a)大的时候,就让xi取1/sqrt(a),这样就可以对sqrt(a)*b进行“补充”,为后面的取值做准备。同时要注意的是最后一个数也就是xm的取值,因为它的取值受到sqrt(a)*b的限制,同时也受到前m-1个数取值的限制,所以当前m-1个数取值完毕后,xm的取值也就确定了。

    #include<cstdio>
    #include<cmath>
    using namespace std;
    int main()
    {
    double m,p,a,b,temp,sum;
    while(scanf("%lf%lf%lf%lf",&m,&p,&a,&b)!=EOF)
    {
    temp=a*b;
    sum=0;
    int i,b=0,s=0;
    for(i=0;i<m-1;i++)
    {
    if(temp>=a)
    {
    temp-=a;
    b++;
    }
    else
    {
    temp++;
    s++;
    }
    }
    sum+=s/(pow(sqrt(a),p));
    sum+=b*(pow(sqrt(a),p));
    sum+=pow(temp/(sqrt(a)),p);
    printf("%d ",(int)(sum+0.5));
    }
    }

  • 相关阅读:
    RPC
    Memcache
    python supervisor使用
    代码规范
    值传递,引用传递
    日志文件目录
    input标签的事件汇总
    箭头函数
    JS数组reduce()方法
    关于Python变量的学习总结
  • 原文地址:https://www.cnblogs.com/hbutACMER/p/4239604.html
Copyright © 2011-2022 走看看