題目描述
在本題中,格點是指橫縱坐標皆為整數的點。
為了圈養他的牛,農夫約翰(Farmer John)建造了一個三角形的電網。他從原點(0,0)牽出一根通電的電線,連接格點(n,m)(0<=n<32000,0<m<32000),再連接格點(p,0)(p>0),最后回到原點。
牛可以在不碰到電網的情況下被放到電網內部的每一個格點上(十分瘦的牛)。如果一個格點碰到了電網,牛絕對不可以被放到該格點之上(或許Farmer John會有一些收獲)。那么有多少頭牛可以被放到農夫約翰的電網中去呢?
輸入輸出格式
輸入格式:
?
輸入文件只有一行,包含三個用空格隔開的整數:n,m和p。
?
輸出格式:
?
輸出文件只有一行,包含一個整數,代表能被指定的電網包含的牛的數目。
?
輸入輸出樣例
輸入樣例#1:
7 5 10
輸出樣例#1:
20
說明
題目翻譯來自NOCOW。
USACO Training Section 3.4
代碼
1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 #include<cstdio> 5 #include<cstdlib> 6 #include<cmath> 7 #define M 262144 8 using namespace std; 9 10 int x,y,z; 11 12 int gcd(int a,int b){ 13 if(b==0) return a; 14 else return gcd(b,a%b); 15 } 16 17 int main(){ 18 // freopen("01.in","r",stdin); 19 scanf("%d%d%d",&x,&y,&z); 20 21 int b=gcd(x,y)+gcd(abs(x-z),y)+z; 22 int S=z*y/2; 23 int n=S-b/2+1; 24 cout<<n<<endl; 25 26 fclose(stdin);fclose(stdout);return 0; 27 }懂了皮克定理就毫無壓力
上度娘鏈接:http://baike.baidu.com/view/3207200.htm
?
概括如下
這叫格點圖
?
(其中n表示多邊形內部的點數,s表示多邊形邊界上的點數,S表示多邊形的面積)
?