| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
因为漏掉了一点..In Reply To:为什么错? 我的思路是: Posted by:bmexue at 2006-11-04 21:39:37 如果最后的 mod=0 呢?
如下:
> 贪心,尽量让最多的Xi=sqrt(a), 多出来的mod个中mod-1个取-1/sqrt(a), mod中的最后一个取和mod-1个-1/sqrt(a)加起来相抵消的正数;
> #include <iostream>
> #include <cmath>
> using namespace std;
> _int64 m, p, a, b;
>
> void work()
> {
> int bit = a;
> int mus_p=0,mus_n=0;
> if(b>0)
> {
> mus_p = b;
> }
> if(b<0)
> {
> mus_n = -1*b*a;
> }
> int left = m - mus_p-mus_n;
> int pl = left/(a+1);//
> int n = pl*a; //
>
> int mod1 = left%(a+1);
> int m_n = mod1-1;// =====here !!!!====if(mod1==0) ?
> double m_p_t = (double)(m_n)/sqrt((double)a);
> double rst =0.0;
> rst +=(double)(mus_p+pl) * pow( (double)a,(double)(p/2));
> rst +=(double)(mus_n + n + m_n) * pow(1.0/(double)a,(double)(p/2));
> rst +=pow(m_p_t,(double)p);
> printf("%.0f\n",rst);
> }
>
> int main()
> {
> while (scanf("%d%d%d%d",&m,&p,&a,&b)!=EOF)
> {
> work();
> }
> return 0;
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator