比赛 2009noip模拟试卷 评测结果 AAAAAAAAA
题目名称 分数化小数 最终得分 100
用户昵称 农场主 运行时间 0.029 s
代码语言 C++ 内存使用 0.30 MiB
提交时间 2016-10-09 15:08:50
显示代码纯文本
#include<cstdio>
#include<algorithm>
#include<map>
#include<queue>
using namespace std;
map<int,int> mp;
queue<int> q;
int tot=0,ans=0;
int n,d;
void carry(int& x,int d){
	if (x==0) return;
	x*=10;
} 
void find(int n,int d){
	while(n){
		q.push(n/d);
		if (!mp[n%d]) mp[n%d]=++tot;
		else {
			ans=mp[n%d];
			return;
		}
		n=n%d;
		carry(n,d);
	}
}
void write(){
	bool o=ans;
	printf("%d.",q.front()); q.pop(); ans--;
	while(!q.empty()){
		if (ans==0) printf("(");
		printf("%d",q.front());
		ans--;
		q.pop();
	}
	if (o) printf(")");
}
char c;
void work(){
	scanf("%d",&n);
	scanf("%c",&c);
	scanf("%d",&d);
	find(n,d);
	if (n%d==0) q.push(0);
	write();
}
int main(){
	freopen("fracdec.in","r",stdin);
	freopen("fracdec.out","w",stdout);
	work();
	return 0;
}