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;
}                                 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值