2017年校招全国统一模拟笔试 01翻转

刚看到这个题目, 还有为几个if,else就可以了, 然后就开始敲了, 后来发现并没有那么简单。
参考题解:http://blog.csdn.net/u010009169/article/details/60892521

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


int solve(long long a, long long b, long long k)
{
    if(a == 0)
        return 0;

    for(int i=1; i<=a+b; ++ i)
    {
        long long t = k*i - a;
        if(t < 0)
            continue;
        if(t & 1)
            continue;
        long long s = (i-1)/2*a + i / 2 * b;
        if(t / 2 <= s)
            return i;
    }
    return -1;
}

int main()
{
    long long a, b, k;
    scanf("%lld%lld%lld", &a, &b, &k);
    printf("%d\n", solve(a, b, k));
    return 0;
}


posted @ 2017-03-12 21:13  aiterator  阅读(307)  评论(0编辑  收藏  举报