《数论》hdoj acm 2.1.8 小数化分数

#include<stdio.h>
#include<math.h>
#include<string.h>
int gcd(int a,int b) { int c; while(b!=0) {
		c=a%b;
		a=b;
		b=c; } return a; } int main() { int t,a,c,b,i,flag,n1,n2,fenzi,fenmu,x; char s[20];
	scanf("%d",&t); while(t--) {
		scanf("%s",s);
		a=1;
		b=c=0;
		flag=0; for(i=a+1;i<=strlen(s)-1;i++) { if(s[i]=='(') {
				b=i;
				flag=1; } if(s[i]==')') {
				c=i;
				flag=1; break; } } if(flag) {
	        n2=0;
		    n1=0; for(i=b+1;i<c;i++) {
		    	n1+=(s[i]-'0')*(int)pow(10,c-i-1); } for(i=a+1;i<b;i++) {
	     		n1+=(int)pow(10,c-i-2)*(s[i]-'0');
	     		n2+=(s[i]-'0')*(int)pow(10,b-i-1); }
	    	fenzi=n1-n2;
	    	fenmu=pow(10,c-a-2)-pow(10,b-a-1);
	    	x=gcd(fenmu,fenzi);
	    	printf("%d/%d\n",fenzi/x,fenmu/x); } else {
			x=strlen(s)-2;
			n1=0; for(i=2;i<x+2;i++) {
				n1+=(int)pow(10,x-i+1)*(s[i]-'0'); }
			fenzi=n1;
			fenmu=(int)pow(10,x);
			x=gcd(fenmu,fenzi);
			printf("%d/%d\n",fenzi/x,fenmu/x); } } return 0; }

你可能感兴趣的:(《数论》hdoj acm 2.1.8 小数化分数)