Fractions to Decimals chapter 2.4最终战
从chapte1到chapter2历时1个月,虽然短短30多题,但我已跪了10+题以上...
太惨了,今天奋战chapter2最终战,在预先看了解题思路的情况下还是跪倒了.
最后是看了下这篇解题报告http://blog.csdn.net/supersnow0622/article/details/9765255
仿照着勉强写了一遍,努力啊少年
/*
ID:hubiao cave
LANG:C++
TASK:fracdec
*/
#include<iostream>
#include<fstream>
#include<cstring>
#include<string>
using namespace std;
int main()
{
// int b[100000];
string str;//存储结果
int used[100000];
int fz,fm;
int num=1;
int result;
int a,b;
ifstream fin("fracdec.in");
ofstream fout("fracdec.out");
memset(used,0,sizeof(used));
fin>>fz>>fm;
result=fz/fm;
while(result>=10)//计算整数部分位数
{
result/=10;
num++;
}
if(fz%fm==0)//判断整除,可以则直接退出
{
fout<<fz/fm<<".0"<<endl;
return 0;
}
else
fout<<fz/fm<<".";
b=fz%fm;
fz=b*10;
a=fz/fm;
str+=a+'0';
while(!used[b])
{
used[b]=str.length();
b=fz%fm;
fz=b*10;
a=fz/fm;
str+=a+'0';
}
if(used[0])//可以除断
{
int totalnum=num+1;
for(int i=0;i<=str.length()-3;++i)
{
totalnum+=i+1;
if(totalnum%76==0)
fout<<endl;
fout<<str[i];
}
fout<<endl;
}
else
{
int totalnum=num+1;
int dd=str.length()-2;
int i;
for(i=0;i<used[b]-1;++i)
{
totalnum+=1;
if(totalnum%76==0)
fout<<endl;
fout<<str[i];
}
totalnum++;
if(totalnum%76==0)
fout<<endl;
fout<<'(';
for(;i<=dd;i++)
{
if(totalnum%76==0)
fout<<endl;
fout<<str[i];
totalnum+=1;
}
if(totalnum%76==0)
fout<<endl;
fout<<')'<<endl;
}
return 0;
}

浙公网安备 33010602011771号