24h購物| | PChome| 登入
2011-06-01 22:30:13| 人氣362| 回應0 | 上一篇 | 下一篇

d316. Quadrangle!

推薦 0 收藏 0 轉貼0 訂閱站台

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;
}

台長: Morris
人氣(362) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 不分類 | 個人分類: ZeroJudge |
此分類下一篇:d411. 算了好久......
此分類上一篇:a064. SPOJ 4580.ABCDEF

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文