⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1104.cpp

📁 扩展除法
💻 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 + -