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

📄 pku1220.cpp

📁 这是ACM 方面的资料 是PKU的 北京大学的出来的
💻 CPP
字号:
#include <stdio.h>
#include <string.h>
#define size 1000
#define UP 100000

int ans[size];
int val[size];
char s[size];
int base_A, base_B;
int val_size;

int c2n(char c)
{
	if (c >= '0' && c <= '9')
		return c - '0';
	if (c >= 'A' && c <= 'Z')
		return c - 'A' + 10;
	if (c >= 'a' && c <= 'z')
		return c - 'a' + 36;
}

char n2c(int x)
{
	if (x < 10)
		return x + '0';
	if (x < 36)
		return x - 10 + 'A';
	return x - 36 + 'a';
}

void Add(int x)
{
	int i = 0;
	val[0] += x;
	while (val[i] >= UP)
	{
		val[i + 1] += val[i] / UP;
		val[i] %= UP;
		i++;
	}
	while (val[val_size])
		val_size++;
}

void Mul(int x)
{
	int i;
	for (i = 0; i < val_size; i++)
	{
		val[i] *= x;
	}
	for (i = 0; i < val_size; i++)
	{
		val[i + 1] += val[i] / UP;
		val[i] %= UP;
	}
	while (val[val_size])
		val_size++;
}

int Zero()
{
	int i;
	for (i = val_size; i >= 0; i--)
	{
		if (val[i])
			return 0;
	}
	return 1;
}

int getMod(int X)
{
	int i, tmp;
	for (i = val_size; i > 0; i--)
	{
		val[i - 1] += val[i] % X * UP;
		val[i] /= X;
	}
	tmp = val[0] % X;
	val[0] /= X;
	return tmp;
}

void Solve()
{
	int i;
	memset(ans, 0, sizeof(ans));
	memset(val, 0, sizeof(val));
	scanf("%d %d %s", &base_A, &base_B, s);
	printf("%d %s\n%d ", base_A, s, base_B);
	val_size = 0;
	for (i = 0; i < strlen(s); i++)
	{
		Mul(base_A);
		Add(c2n(s[i]));
	}
	i = 0;
	if (Zero())
	{
		printf("0\n\n");
		return;
	}
	while (!Zero())
	{
		ans[i] = getMod(base_B);
		i++;
	}
	i--;
	while (i >= 0)
	{
		printf("%c", n2c(ans[i--]));
	}
	printf("\n\n");
}

int main()
{
	int T;
	scanf("%d", &T);
	while (T--)
		Solve();
	return 0;
}

⌨️ 快捷键说明

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