比赛 |
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;
}