天天看點

POJ 1930 Dead Fraction G++ 數論 背

POJ 1930 Dead Fraction G++ 數論 背
POJ 1930 Dead Fraction G++ 數論 背
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
//英語 看博友分析 抄博友程式  數論  背 
int gcd(int a,int b)
{
	if(a==0)
	{
		return b;
	}else
	{
		return gcd(b%a,a);
	}
}
int main()
{
	string s;
	while(cin>>s)
	{
		if(s=="0")
		{
			break;
		}
		int all=0;
		for(int i=2;s[i]!='.';i++)
		{
			all=all*10+s[i]-'0';
		}
		int t=all;
		int l=s.size()-5;
		int minb=1e9;
		int mina=1e9;
		for(int i=1;i<=l;i++)
		{
			t=t/10;
			int a=(all-t);
			int b=(int)pow(10.0,l-i)*(pow(10.0,i)-1);
			int j=gcd(a,b);
			if(b/j<minb)
			{
				mina=a/j;
				minb=b/j;
			}
		}
		cout<<mina<<"/"<<minb<<endl;
	}
	return 0;
}
           

 

繼續閱讀