usaco_fracdec.cpp

来自「usaco自己做的1到5章的代码」· C++ 代码 · 共 86 行

CPP
86
字号
/*
ID: wangyuc2
PROG: fracdec
LANG: C++
*/
#include <fstream>
#include <iostream>
#include <cmath>
#include <memory>
#include <iomanip>

using namespace std;
ifstream fin("fracdec.in");
ofstream fout("fracdec.out");

int main()
{   
    char a[1000000];
    int n,d,i,j,dp;
    double ip;
    bool np[1000002];
    int npp[1000002];
    memset(np,false,sizeof(np));
    fin>>n>>d;
    ip=n/d;
    dp=n%d;
    if(dp == 0){
     fout.setf(ios::fixed);
     fout.precision(1);
     fout<<ip<<endl;}
    
    else{i=0;
         dp*=10;
         while(!np[dp])
         {
           np[dp]=true;
           npp[dp]=i;
           a[i]=dp/d;
           dp=(dp%d)*10;
		   i++;
         }
         j=i; 
         fout<<(int)ip<<'.';
         int t=0;
         int k=0;
		 n=int(ip);
		 if(n==0) k=1;
		 else{
		 while(n>10)
		 {
			 n/=10;
			 k++;
		 }
		 if(n == 10) k+=2;
		 else k++;
		 }
		 k++;
		 if(a[j-1] == 0 && dp == 0) {
			 for(i=0;i<j-1;i++) 
			{
			 fout<<int(a[i]);
			 if(k%76==0) fout<<endl;
			 k++;
			}
			 fout<<endl;
		 }
		 else{
		   while(t<j)
		   {
             //for(int k=0;i<76;k++)
			   //k++;
               if(t!=npp[dp] && t!=j-1) fout<<(int)a[t];
               if(t==npp[dp]) {fout<<'('<<int(a[t]);k++;}
               if(npp[dp] == j-1) fout<<')'<<endl;
			   else if(t == j-1) fout<<int(a[t])<<')'<<endl;
				t++;
               k++;
               if(k%76==0) fout<<endl;
               
		   }
		 }
    }         
    //system("PAUSE");
    return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?