比赛 2009noip模拟试卷 评测结果 AAAAAAAAA
题目名称 分数化小数 最终得分 100
用户昵称 SOBER GOOD BOY 运行时间 0.008 s
代码语言 C++ 内存使用 1.08 MiB
提交时间 2016-10-09 14:11:24
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int n,m;
int vis[100100],s[100100],cnt=0;
int main(){
		freopen("fracdec.in","r",stdin);
		freopen("fracdec.out","w",stdout);
		scanf("%d%d",&n,&m);
		int temp=n/m;
		if(temp*m==n)
		{
		printf("%d.0",temp);
		return 0;
		}
		printf("%d.",temp);
		temp=(n-temp*m)*10;
		for(;;)
		{
			cnt++;
			s[cnt]=temp/m;
			temp=(temp-s[cnt]*m)*10;
			if(vis[temp/10])break;
			vis[temp/10]=cnt;
			if(temp==0)
			{
				for(int i=1;i<=cnt;i++)
				{
					printf("%d",s[i]);
				}
				return 0;
			}
		}
		int k=vis[temp/10];
		if(s[cnt]==s[1])
		{
			printf("("); 
			for(int i=k;i<cnt;i++)
			{
				printf("%d",s[i]);
			}
			printf(")");
		}
		else
		{
			for(int i=1;i<=k;i++)
			{
				printf("%d",s[i]);
			}
			printf("(");
			for(int i=k+1;i<=cnt;i++)
			{
				printf("%d",s[i]);
			}
			printf(")");
		}
		return 0;
}