2010年9月18日 星期六

ACM 332 - Rational Numbers from Repeating Fractions

#include <stdio.h>
#include <string.h>

int gcd(int a,int b)
{
if (a % b == 0){ return b;}
return gcd(b , a % b);
}

int pow10(int n)
{
int i, sum = 1;
for (i = 0; i < n; i ++)
sum *= 10;
return sum;
}

char str[20];

int main()
{
int j, i, k, h, g, d, s, caseNum = 1;
while(scanf("%d", &j) == 1 && j != -1)
{
scanf("%s", str);
char ch;
int len = strlen(str);
if (j != 0) d = pow10(len - 2) - pow10(len - 2 - j);
else d = pow10(len - 2);
k = 0, h = 0;
for (i = 2, g = 0; i < len; i ++, g ++)
{
ch = str[i];
if (g < (len - 2 - j)) h = h * 10 + (ch - '0');
k = k * 10 + (ch - '0');
}
if (j != 0)
{
s = gcd(k - h, d);
printf("Case %d: %d/%d\n", caseNum ++, (k - h) / s, d / s);
}
else
{
s = gcd(k, d);
printf("Case %d: %d/%d\n", caseNum ++, k / s, d / s);
}


}

return 0;
}

回目錄
回首頁

沒有留言 :

張貼留言

Related Posts Plugin for WordPress, Blogger...