fracdec.cpp
来自「dd牛的usaco源代码!对学习算法」· C++ 代码 · 共 74 行
CPP
74 行
/*
ID: dd.ener1
PROG: fracdec
LANG: C++
*/
#include <cstdio>
#include <cstring>
using namespace std;
long N,D;
long shang[150000];
long yu[150000];
bool xunhuan;
long n,beg;
void input(){
freopen("fracdec.in","r",stdin);
scanf("%d%d",&N,&D);
}
void solve(){
long A=N%D;
long B=D;
xunhuan=true;
memset(yu,-1,sizeof(yu));
for(n=0;;){
if(A==0){
xunhuan=false;
return;
}
shang[n]=A/B;
A%=B;
if(yu[A]!=-1){
beg=yu[A];
return;
}
yu[A]=n++;
A*=10;
}
}
void output(char c){
static long time=-1;
if(time%76==75&&c!='\n')putchar('\n');
++time;
putchar(c);
}
void output(){
freopen("fracdec.out","w",stdout);
char str[20];
sprintf(str,"%d.",N/D);
for(long i=0;str[i];++i)
output(str[i]);
if(!(N%D)){
output('0');
output('\n');
return;
}
if(!xunhuan)
for(long i=1;i<n;++i)
output('0'+shang[i]);
else{
for(long i=1;i<=beg;++i)
output('0'+shang[i]);
output('(');
for(long i=beg+1;i<=n;++i)
output('0'+shang[i]);
output(')');
}
output('\n');
}
int main(){
input();
solve();
output();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?