比赛 2009noip模拟试卷 评测结果 AAAAAAAAA
题目名称 分数化小数 最终得分 100
用户昵称 kxxy 运行时间 0.009 s
代码语言 C++ 内存使用 0.31 MiB
提交时间 2016-10-09 16:37:23
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;

int n,d;

inline int gcd(int x,int y)
{
	if(x==0)
		return y;
	return gcd(y%x,x);
}

inline int cir()
{
	int dd=d;
	int c2=0,c5=0;
	while(dd%2==0)
		c2++,dd/=2;
	while(dd%5==0)
		c5++,dd/=5;
	return max(c2,c5);
}

int main()
{
	freopen("fracdec.in","r",stdin);
	freopen("fracdec.out","w",stdout);
	cin>>n>>d;
	double x;
	int t,len,b;
	t=gcd(n,d);
	n/=t,d/=t;
	cout<<n/d<<'.';
	x=(double)n/(double)d;
	if(n>=d)
		len=(int)ceil(log10(x))+1;
	else
		len=2;
	b=cir();
	n%=d;
	bool flag=false;
	if(n==0)
	{
		cout<<0<<endl;
		return 0;
	}
	for(int i=1;i<=b;i++)
	{
		n*=10;
		cout<<n/d;
		n%=d;
		if(n==0)
			flag=true;
		len++;
		if(len%76==0)
			cout<<endl;
	}
	t=n;
	if(flag)
		return 0;
	cout<<"(";
	do
	{
		n*=10;
		cout<<n/d;
		n%=d;
		len++;
		if(len%76==0)
			cout<<endl;
	}while(n!=t);
	cout<<")";
	return 0;
}