用y=1...m这些直线截题中的两条线段,算出x坐标的差值,取整。
#include <fstream>
using namespace std;
int main()
{
ifstream fin("fence9.in");
ofstream fout("fence9.out");
double m,n,p;
int count = 0;
fin>>n>>m>>p;
for(int i=1;i<(int)m;i++)
{
double x = (n-p)/m*i+p;
double y = n/m*i;
int t1 = (int)x;
int t2 = (int)y;
if(((int)n-(int)p)*i%(int)m==0)//该整数点落在(n,m)--(p,0)这条直线上
t1--;
count+= t1-t2;
}
fout<<count<<endl;
return 0;
}