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

📄 1117.cpp

📁 哈尔滨工业大学ACM 竞赛网上在线试题集锦的源代码
💻 CPP
字号:
/*  This Code is Submitted by wywcgs for Problem 1117 on 2005-10-24 at 15:43:55 */ 
#include <cstdio>
#include <cstring>

const int MAX = 64;
const int C = 125;

class LongDouble {
public:
	int n[MAX];
	void init() {
		memset(n, 0, sizeof(n));
	}
	void muti(const int k, const int m) {
		int i, j, p[MAX] = {0}, l;
		p[k] = m;
		for(i = 0; i <= k; i++) {
			for(j = 0; j <= k; j++) {
				p[j] *= C;
				if(p[j] >= 1000) {
					p[j-1] += p[j] / 1000;
					p[j] %= 1000;
				}
			}
		}
		for(i = 0; i <= k; i++) {
			n[i] += p[i];
			for(l = 0; n[i-l] >= 1000; l++) {
				n[i-l-1] += n[i-l] / 1000;
				n[i-l] %= 1000;
			}
		}
	}
	void print(const int l) {
		int i;
		printf("0.");
		for(i = 0; i < l; i++) {
			if(n[i] >= 10 && n[i] < 100) {
				printf("0");
			} else if(n[i] < 10) {
				printf("00");
			}
			if(i == l-1) {
				while(n[i] % 10 == 0) {
					n[i] /= 10;
				}
			}
			printf("%d", n[i]);
		}
		printf(" [10]\n");
	}
};

int main()
{
	LongDouble longd;
	char line[MAX];
	int len, i;
	
	while(gets(line) != NULL) {
		if(line[0] == 1) {
			printf("1 [8] = 1 [10]\n");
		} else {
			longd.init();
			len = strlen(line);
			for(i = 2; i < len; i++) {
				longd.muti(i - 2, line[i] - '0');
			}
			printf("%s [8] = ", line);
			longd.print(len-2);
		}
	}
	
	return 0;
}

⌨️ 快捷键说明

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