查看: 1983|回復: 0
打印 上一主題 下一主題

[HOJ] 25 - 迷宮

[複製鏈接]
  • TA的每日心情
    開心
    2015-4-12 10:09
  • 簽到天數: 137 天

    [LV.7]常住居民III

    142

    主題

    686

    帖子

    3559

    積分

    邁向天堂

    蘇多門

    Rank: 8Rank: 8

    積分
    3559

    新手達陣台南一中資訊社程式設計達人 - 2014

    跳轉到指定樓層
    樓主
    發表於 2015-3-15 03:11:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

    趕快加入我們來參與討論吧!

    您需要 登錄 才可以下載或查看,沒有帳號?加入我們

    x
    稍微想一下就會發現:n*m為奇數時,會有一步走斜向,答案為n*m-1+sqrt(2)
    n*m為偶數時,答案為n*m

    還滿容易理解的

    不過有兩個陷阱:
    1. n或m為1時答案為2*(n*m-1)
    2. 別用double或long double存,會炸開,遇到sqrt(2)時自己輸出.41就行了

    [C++] 純文本查看 復制代碼
    #include<iostream>
    #define endl '\n'
    using namespace std;
    typedef long long ll;
    int main()
    {
    	ios::sync_with_stdio(0);
    	cin.tie(0);
    
    	long long n,m;
    	cin>>n>>m;
    	long long pc=n*m;
    	if(n==1 || m==1)
    		cout<<2*(pc-1)<<".00"<<endl;
    	else if(pc%2==0)
    		cout<<pc<<".00"<<endl;
    	else
    		cout<<pc<<".41"<<endl;
    }
    

    蘇多門 domen111
    My Web: https://sites.google.com/site/domenprg/
    回復

    使用道具 檢舉

    您需要登錄後才可以回帖 登入 | 加入我們

    本版積分規則

    快速回覆 返回頂部 返回列表