UVa 332 - Rational Numbers from Repeating Fractions

題目:已知一個分數的小數形式和循環節長度,求分數。

分析:數論。利用題目給的公式直接求解即可。

            處理過程中直接使用整數計算

            然後對分子分母計算約分即可。

說明:發現並沒有讀過多少書╮(╯▽╰)╭。

#include 

int gcd(int a, int b)
{
	return a%b?gcd(b, a%b):b;
}

int main()
{
	int  n, cases = 1;
	char buf[1001]; 
	while (~scanf("%d",&n) && n != -1) {
		scanf("%s",buf);
		int den = 1, num = 0;
		for (int i = 2; buf[i]; ++ i) {
			den *= 10;
			num = num *10 + (buf[i]-'0')*1;
		}
		if (n) {
			int temp = 1;
			for (int i = 0; i < n; ++ i)
				temp = temp*10;
			num = num-num/temp;
			den = den-den/temp;
		}
		int red = gcd(num, den);
		printf("Case %d: %d/%d\n",cases ++,num/red,den/red);
	}
	
	return 0;
}


你可能感兴趣的:(数论,解题报告)