sicily 11536. Strategy

http://soj.sysu.edu.cn/show_problem.php?pid=11536

好想知道那两位400多Bytes是怎么写出来的。。。

#include <iostream>
using namespace std;
typedef unsigned long long LL;
int main()
{
    LL n1,n2,k;
    cin >> n1 >> n2 >> k;
    LL p = 2;
    LL np;
    if(k == 1) n2 = n1,p = 1;
    while(p != k)
    {
        if(n1 < n2)
        {
            LL temp = n1;
            n1 = n1+n2;
            n2 = temp;
            --p;
        }
        if(!n2)
        {
            if((k-p)%3) n2 = n1;
            break;
        }
        LL dp = (n1/n2)/2*3+(n1/n2)%2;
        if(k <= p+dp)
        {
            if((k-p)%3) n2 = n1-((k-p)/3*2+(k-p)%3)*n2;
            p = k;
        }
        else 
        {
            LL temp = n1;
            n1 = n1%n2;
            p += dp;
            if((temp/n2)%2) n2 -= n1,++p;
        }
    }
    cout << n2 << endl;
}                                 

你可能感兴趣的:(sicily 11536. Strategy)