UVa 1648 (推公式) Business Center

來源:互聯網
上載者:User

標籤:

題意:

有一種奇怪的電梯,每次只能向上走u個樓層或者向下走d個樓層

現在有m個這種電梯,求恰好n次能夠到達的最小樓層數(必須是正數),最開始預設位於第0層。

分析:

假設電梯向上走x次,則向下走n-x次,則所到達的樓層為xu - (n-x)d ≥ 0

(u+d)x ≥ nd,x的最小值為

換句話說,如果nd % (u+d) == 0, x = nd / (u+d)

否則 x = nd / (u+d) + 1

考慮到不能停到0樓的條件:當nd % (u+d) == 0會出現這種情況,所以只能多上一次u個樓層,少下一次d個樓層,所以這樣最終會停在u+d層

 1 #include <cstdio> 2  3 int main() 4 { 5     int n, m; 6  7     while(scanf("%d%d", &n, &m) == 2) 8     { 9         int ans = 1000000000;10         while(m--)11         {12             int u, d;13             scanf("%d%d", &u, &d);14             if((n*d) % (u+d) == 0) { if(u+d < ans) ans = u+d; }15             else16             {17                 int x = (n*d) / (u+d) + 1;18                 int t = x*(u+d)-n*d;19                 if(t < ans) ans = t;20             }21         }22         printf("%d\n", ans);23     }24 25     return 0;26 }
代碼君

 

UVa 1648 (推公式) Business Center

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.