2013年12月26日 星期四

[USACO] 2-4-5 Fractions to Decimals


/*
ID: 551100k1
LANG: C++
TASK: fracdec
*/
#include<stdio.h>
#include<map>
#include<vector>
#include<iostream>
using namespace std;
map<int,int> ma;
vector<int> vec;
string ans;
char s[100];
int main(){
    freopen("fracdec.in","r",stdin);
    freopen("fracdec.out","w",stdout);
    int n,m,i,j,r,flag=1;
    scanf("%d%d",&n,&m);
    vec.push_back(n);
    ma[n]=1;
    sprintf(s,"%d.",n/m);
    ans+=string(s);
    n%=m,i=1;
    ma[n]=1;
    while(1){
        i++;
        n*=10;
        r=n/m;
        n%=m;
        vec.push_back(r);
        if(n==0) break;
        if(ma[n]){
            flag=0;
            for(j=1;j<ma[n];j++)
                sprintf(s,"%1d",vec[j]),ans+=string(s);
            ans+='(';
            for(j=ma[n];j<vec.size();j++)
                sprintf(s,"%1d",vec[j]),ans+=string(s);
            ans+=")\n";
            break;
        }
        ma[n]=i;
        if(!n) break;
    }
    if(flag){
        for(j=1;j<vec.size();j++)
            sprintf(s,"%1d",vec[j]),ans+=string(s);
        ans+='\n';
    }
    for(i=0;i<ans.length();i++){
        if(i && i%76==0) puts("");
        putchar(ans[i]);
    }
}

沒有留言:

張貼留言