在本题中,格点是指横纵坐标皆为整数的点。
为了圈养他的牛,农夫约翰建造了一个三角形的电网。他从原点(0,0)牵出一根通电的电线,连接格点[n,m](0<=n<32000,0<m<32000),再连接格点[p,0](p>0),最后回到原点。
牛可以在不碰到电网的情况下被放到电网内部的每一个格点上(十分苗条的牛)。如果一个格点碰到了电网,牛绝对不可以被放到该格点之上。那么有多少头牛可以被放到农夫约翰的电网中去呢?
格式
PROGRAM NAME: fence9
INPUT FORMAT:(file fence9.in)
输入文件只有一行,包含三个用空格隔开的整数:n,m和p。
OUTPUT FORMAT:(file fence9.out)
输出文件只有一行,包含一个整数,代表能被指定的电网包含的牛的数目。
SAMPLE INPUT
7 5 10
SAMPLE OUTPUT
20
![](http://www.cppblog.com/images/cppblog_com/xiongnanbin/tu1.jpg)
【参考程序】:
/*
ID: XIONGNA1
PROG: fence9
LANG: C++
*/
#include<iostream>
#include<cmath>
#include<cstring>
int n,m,p;
int main()
{
freopen("fence9.in","r",stdin);
freopen("fence9.out","w",stdout);
scanf("%d%d%d",&n,&m,&p);
int s=0,x1,x2;
for (int y=1;y<=m-1;y++)
{
if (y*(n-p)%m==0) x2=(y*(n-p)/m)+p-1;
else x2=(int)floor(y*(n-p)/(m*1.0)+p);
x1=(int)floor(y*n/(m*1.0))+1;
s+=x2-x1+1;
}
printf("%d\n",s);
return 0;
}