⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pku1090.cpp

📁 这是ACM 方面的资料 是PKU的 北京大学的出来的
💻 CPP
字号:
#include <stdio.h>
#include <string.h>
#define X 10000000
int v[1001];
int N;
int ans[100];

void Add1()
{
	int i;
	ans[0] += 1;
	for (i = 0; i < 99; i++)
	{
		if (ans[i] >= X)
		{
			ans[i + 1]++;
			ans[i] -= X;
		}
		else
		{
			break;
		}
	}
}

void Mul2()
{
	int i;
	for (i = 0; i < 100; i++)
	{
		ans[i] *= 2;
	}
	for (i = 0; i < 100; i++)
	{
		if (ans[i] >= X)
		{
			ans[i + 1] ++;
			ans[i] -= X; 
		}
	}
}

void Show()
{
	int i = 99;
	for (; i > 0; i--)
	{
		if (ans[i])
		{
			break;
		}
	}
	printf("%d", ans[i--]);
	for (; i >= 0; i--)
	{
		printf("%07d", ans[i]);
	}
	printf("\n");
}

void Solve()
{
	int i, j;
	memset(ans, 0, sizeof(ans));
	for (i = 0; i < N; i++)
	{
		scanf("%d", &v[i]);
	}
	for (i = 1; i < N; i++)
	{
		if (v[i])
		{
			for (j = i - 1; j >= 0; j--)
				v[j] = (v[j] + 1) % 2;
		}
	}
	for (i = N - 1; i >= 0; i--)
	{
		Mul2();
		if (v[i])
		{
			Add1();
		}
	}
	Show();
}

int main()
{
	while (EOF != scanf("%d", &N) && N)
	{
		Solve();
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -