码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces Global Round 8 A. C+=(贪心)

时间:2020-06-19 11:52:04      阅读:44      评论:0      收藏:0      [点我收藏+]

标签:swa   wap   证明   多少   href   使用   test   using   lob   

题目链接:https://codeforces.com/contest/1368/problem/A

题意

给出 $a,b$,只可以使用 ‘+=‘ 运算符,问至少要使用多少次使得 $a$ 或 $b$ 大于 $n$ 。($1 \le a,b \le n \le 10^9$) 

题解

每次让较小的数加上较大的数。

证明

正确性

每次使用 ‘+=‘ 运算符,不论是 a+=b 还是 b+=a,得到的和一定为 $a + b$,只是将这个和赋给谁的问题,当然是赋给较小的数。

时间复杂度

每次 ‘+=‘ 可以视为给一个数乘以 $2$,所以这样的操作至多执行 $log\ n$ 次,模拟是不会超时的。

代码

#include <bits/stdc++.h>
using namespace std;

void solve() {
    int a, b, n; cin >> a >> b >> n;
    int cnt = 0;
    while (a <= n and b <= n) {
        if (a > b) swap(a, b);
        a += b;
        ++cnt;
    }
    cout << cnt << "\n";
}

int main() {
    int t; cin >> t;
    while (t--) solve();
}

 

Codeforces Global Round 8 A. C+=(贪心)

标签:swa   wap   证明   多少   href   使用   test   using   lob   

原文地址:https://www.cnblogs.com/Kanoon/p/13161971.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!