📄 1104.cpp
字号:
#include <iostream>
#include <vector>
#include <math.h>
using namespace std;
struct numpair
{
int numerator;
int denominator;
};
vector<int> compute(int numer,int deno);
bool iscur(vector<int> a,int b,int c);
void main()
{
vector<numpair> inum;
vector<int> x;
numpair t;
cin>>t.numerator>>t.denominator;
while (t.numerator!=0 || t.denominator!=0)
{
inum.push_back(t);
cin>>t.numerator>>t.denominator;
}
for (int i=0;i<inum.size();i++)
{
bool flag=false;
x=compute(inum[i].numerator,inum[i].denominator);
cout<<".";
if(x.size()==2*inum[i].denominator)
{
for (int m=0;m<inum[i].denominator && flag==false;m++)
{
int k=m+1;
while(k<inum[i].denominator && flag==false)
{
if(iscur(x,m,k))
{
for (int j=1;j<=k;j++)
{
cout<<x[j-1];
if((j+1)%50==0)
cout<<endl;
}
cout<<endl;
cout<<"The last "<<k-m<<" digits repeat forever."<<endl;
flag=iscur(x,m,k);
}
else
k++;
}
}
}
else
{
for (int j=0;j<x.size();j++)
{
cout<<x[j];
}
cout<<endl;
cout<<"This expansion terminates."<<endl;
}
}
}
vector<int> compute(int numer,int deno)
{
vector<int> quotient;
numer=numer*10;
div_t temp;
temp=div(numer,deno);
int i=0;
while (temp.rem!=0 && i<2*deno)
{
quotient.push_back(temp.quot);
numer=temp.rem*10;
temp=div(numer,deno);
i++;
}
if(temp.rem==0)
quotient.push_back(temp.quot);
return quotient;
}
bool iscur(vector<int> a,int b,int c)
{
while(a[b]==a[c] && c<a.size())
{
b++;
c++;
}
if(c==a.size())
return true;
return false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -