这题...额 我就是模拟着一条一条数完为止,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 }