2011-06-01 22:30:13Morris
d316. Quadrangle!
http://zerojudge.tw/ShowProblem?problemid=d316
內容 :
已知四边形ABCD的面积为S。E,F,G,H各点分别在四边形ABCD的AB,BC,CD,DA边上。
当 AE:EB=BF:FC=CD:GD=DH:HA=k 时,求四边形EFGH的面积。
輸入說明
:
每行一组数据:S,k(它们都是小于2的31次方的正整数)。
輸出說明
:
对于每组数据,输出四边形EFGH的面积。
如果面积是整数,就直接输出;
如果面积是分数,就按照 5 / 9 输出,分数要化简。
参考 Sample output.
範例輸入 :
1 1
範例輸出 :
1 / 2
提示
:
答案中,所有的数字小于2的64次方。
测试数据很弱,不久之后将加强XXD
不完善的程序只能得到暂时的AC
出處
:
经典题目
(管理:liouzhou_101)
/**********************************************************************************/
/* Problem: d316 "Quadrangle!" from 经典题目 */
/* Language: C */
/* Result: AC (6ms, 266KB) on ZeroJudge */
/* Author: morris1028 at 2011-05-31 22:19:15 */
/**********************************************************************************/
#include<stdio.h>
unsigned long long gcd(unsigned long long x, unsigned long long y) {
unsigned long long t;
while(x%y) {
t = x, x = y, y = t%y;
}
return y;
}
main() {
int s, k;
while(scanf("%d %d", &s, &k) == 2) {
unsigned long long U = (2*k), L = (k+1);
unsigned long long t;
t = gcd(U, L), U /= t, L /= t;
L *= k+1;
t = gcd(U, L), U /= t, L /= t;
U = L - U;
t = gcd(U, L), U /= t, L /= t;
U *= s;
t = gcd(U, L), U /= t, L /= t;
if(U%L == 0)
printf("%llu\n", U/L);
else
printf("%llu / %llu\n", U, L);
}
return 0;
}