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