Electric Fence USACO 3.4

这题...额 我就是模拟着一条一条数完为止,4种情况,模拟过了,没想到到了第三章还有这么简单的题

 

  1 /*
  2 
  3 ID: hubiao cave
  4 
  5 PROG: fence9
  6 
  7 LANG: C++
  8 
  9 */
 10 
 11 
 12 
 13 
 14 #include<iostream>
 15 
 16 #include<fstream>
 17 
 18 #include<string>
 19 
 20 using namespace std;
 21 
 22 
 23 
 24 int main()
 25 
 26 {
 27 
 28     ifstream fin("fence9.in");
 29 
 30     ofstream fout("fence9.out");
 31 
 32     int n,m,p;
 33     int sum=0;
 34 
 35     
 36 
 37     fin>>n>>m>>p;
 38 
 39     if(n==0)
 40     {
 41 
 42         for(int i=1;i<p;i++)
 43         {
 44             if((p-i)*m%p)
 45                 sum+=max((p-i)*m/p,0);
 46             else
 47                 sum+=max((p-i)*m/p-1,0);
 48         }
 49 
 50     }
 51     else if(n==p)
 52     {
 53         for(int i=1;i<p;i++)
 54         {
 55             if(i*m%p)
 56                 sum+=max(i*m/p,0);
 57             else
 58                 sum+=max(i*m/p-1,0);
 59         }
 60     }
 61     else if(n<p)
 62     {
 63         for(int i=1;i<=n;i++)
 64         {
 65             if(i*m%n)
 66                 sum+=max(i*m/n,0);
 67             else
 68                 sum+=max(i*m/n-1,0);
 69         }
 70 
 71         for(int i=n+1;i<p;i++)
 72         {
 73             if((p-i)*m%(p-n))
 74                 sum+=max((p-i)*m/(p-n),0);
 75             else
 76                 sum+=max((p-i)*m/(p-n)-1,0);
 77         }
 78 
 79     }
 80     else
 81     {
 82         for(int i=1;i<=p;i++)
 83         {
 84             if(i*m%n)
 85                 sum+=max(i*m/n,0);
 86             else
 87                 sum+=max(i*m/n-1,0);
 88         }
 89 
 90         for(int i=p+1;i<n;i++)
 91         {
 92             if(i*m%n)
 93             {
 94                     sum+=(i*m/n)-((i-p)*m/(n-p));
 95             }
 96             else
 97                 sum+=(i*m/n)-((i-p)*m/(n-p))-1;
 98         }
 99     }
100     fout<<sum<<endl;
101     return 0;
102 
103 
104 }

 

posted @ 2013-10-22 20:39  cavehubiao  阅读(157)  评论(0编辑  收藏  举报