Fractions to Decimals chapter 2.4最终战

从chapte1到chapter2历时1个月,虽然短短30多题,但我已跪了10+题以上...

太惨了,今天奋战chapter2最终战,在预先看了解题思路的情况下还是跪倒了.

最后是看了下这篇解题报告http://blog.csdn.net/supersnow0622/article/details/9765255

仿照着勉强写了一遍,努力啊少年

/*
	ID:hubiao cave
	LANG:C++
	TASK:fracdec
	*/

#include<iostream>
#include<fstream>
#include<cstring>
#include<string>
using namespace std;


int main()
{
//	int b[100000];
	string str;//存储结果
	int used[100000];
	int fz,fm;
	int num=1;
	int result;
	int a,b;
	ifstream fin("fracdec.in");
	ofstream fout("fracdec.out");

	memset(used,0,sizeof(used));
	fin>>fz>>fm;
	result=fz/fm;

	while(result>=10)//计算整数部分位数
	{
		result/=10;
		num++;
	}

	if(fz%fm==0)//判断整除,可以则直接退出
	{
		fout<<fz/fm<<".0"<<endl;
		return 0;
	}
	else
		fout<<fz/fm<<".";
	b=fz%fm;
	fz=b*10;
	a=fz/fm;
	str+=a+'0';
	while(!used[b])
	{
		used[b]=str.length();
		b=fz%fm;
		fz=b*10;
		a=fz/fm;
		str+=a+'0';
	  
	}


	if(used[0])//可以除断
	{
		int totalnum=num+1;
		for(int i=0;i<=str.length()-3;++i)
		{
			totalnum+=i+1;
			if(totalnum%76==0)
				fout<<endl;
			fout<<str[i];
		}
		fout<<endl;
	}
	else
	{
		int totalnum=num+1;
		int dd=str.length()-2;
		int i;
		for(i=0;i<used[b]-1;++i)
		{
			totalnum+=1;
			if(totalnum%76==0)
				fout<<endl;
			fout<<str[i];
		}
		totalnum++;
		if(totalnum%76==0)
			fout<<endl;
		fout<<'(';
		for(;i<=dd;i++)
		{
		
			if(totalnum%76==0)
				fout<<endl;
			fout<<str[i];
			totalnum+=1;
		}
		if(totalnum%76==0)
			fout<<endl;
		fout<<')'<<endl;
	}


	return 0;
}

  

原文地址:https://www.cnblogs.com/cavehubiao/p/3322714.html