// Problem#: 1485
// Submission#: 1663154
// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
// URI: http://creativecommons.org/licenses/by-nc-sa/3.0/
// All Copyright reserved by Informatic Lab of Sun Yat-sen University
//1485
#include <iostream>
#include <memory.h>
#include <cstdio>
using namespace std;
int main()
{
int n;
bool sign = true;
while (cin >> n)
{
//n = 2 * n;
if (!sign)
{
printf ("\n");
}
sign = false;
int res[500] = {0};
memset(res,0,sizeof(res));
res[0] = 1;
int i,j,k,l;
for (i = 0; i < n; i++)
{
int carry = 0;
for (j = 0; j < 499; j++)
{
int temp = (res[j] * 2 + carry) / 10;
res[j] = (res[j] * 2 + carry) % 10;
carry = temp;
}
res[499] += carry;
}
//decrement
if (res[0] == 0)
{
res[0] = 9;
j = 1;
while (res[j] == 0)
{
res[j] = 9;
j++;
}
res[j] --;
}
else
res[0] --;
int carry = 0;
for (j = 0; j < 499; j++)
{
int temp = (res[j] * 2 + carry) / 10;
res[j] = (res[j] * 2 + carry) % 10;
carry = temp;
}
res[499] += carry;
k = 499;
while (res[k] == 0)
k--;
for (int l = k; l >= 0; l--)
printf ("%d",res[l]);
printf("\n");
}
return 0;
}
sicily 1485 Hanoi双塔问题
最新推荐文章于 2024-04-20 19:46:01 发布