HDU ACM 2522 A simple problem 模拟除法

分析:在除的过程中,当出现相同余数时即出现循环节。

#include<iostream>
using namespace std;

bool h[100002];

void div(int x)
{
	int t;

	memset(h,false,x*sizeof(h[0])+1);
	h[1]=true;
	t=1;
	while(t)
	{
		t=t*10;
		cout<<t/x;
		t=t%x;
		if(h[t])  //再次出现相同余数,表示出现循环节
			break;
		h[t]=true;
	}
}

int main()      
{
	int T,n;

	cin>>T;
	while(T--)
	{
		cin>>n;
		if(n<0)
		{
			cout<<"-";
			n=-n;
		}
		if(n==1)
		{
			cout<<1<<endl;
			continue;
		}
		cout<<"0.";
		div(n);
		cout<<endl;
	}
    return 0;      
}


你可能感兴趣的:(编程,C++,c,算法,ACM)