Description
Input
Output
Sample Input
4 3 5 1 1 2 5 2 2 0 0
Sample Output
Case 1: 11 0 5 30 4 6 1 27
HINT
Source
题意:根据给定的数字算出r1,r2,然后对于r1,r2的四则运算我们要用一系列的整数来表示出来
思路:首先不难想到对于r1,r2我们先用分子分母表示出来,然后再对其进行四则运算,四则运算考虑了一下0的情况,最关键的是整数部分的处理,对于小数部分不断的循环去除便可以了。。。
例如相加得到77/5 = 15.4
首先输出15,然后剩下0.4
于是1/0.4=2.5,输出2
还剩下0.5,于是1/0.5,输出2,输出完毕,这一部分就是看余数与除数的关系
#include<iostream> #include<algorithm> #include<stdio.h> #include<math.h> #define esp 1e-12 #define LL long long #define gcd(a,b) __gcd(a,b) using namespace std; LL a[25]; void Print(LL a,LL b) { LL gg = gcd(a, b); a /= gg; b /= gg; if (b < 0) { a *= -1; b *= -1; } LL tmp = (a % b + b) % b; LL a0 = (a - tmp) / b; printf("%lld", a0); a=tmp; swap(a,b); while(b) { tmp=a/b; printf(" %lld",tmp); a=a%b; swap(a,b); } printf("\n"); } int main() { int Ca=1; int n1,n2; LL fm1,fm2,fm3,fz1,fz2,fz3; while(scanf("%d%d",&n1,&n2),(n1!=0&&n2!=0)) { for(int i=0; i<n1; i++) { scanf("%lld",&a[i]); } if(n1==1) { fm1=0; fz1=a[0]; } else { fm1=a[n1-1]; fz1=1; for(int i=n1-2; i>0; i--) { LL tmp=fm1; fm1=fz1+a[i]*fm1; fz1=tmp; } fz1=fz1+a[0]*fm1; } for(int i=0; i<n2; i++) { scanf("%lld",&a[i]); } if(n2==1) { fm2=0; fz2=a[0]; } else { fm2=a[n2-1]; fz2=1; for(int i=n2-2; i>0; i--) { LL tmp=fm2; fm2=fz2+a[i]*fm2; fz2=tmp; } fz2=fz2+a[0]*fm2; } printf("Case %d:\n",Ca++); /****************************************/ //+ if(fm1==0||fm2==0) { if(fm1==0&&fm2!=0) { Print(fz1*fm2+fz2,fm2); } if(fm1!=0&&fm2==0) { Print(fz2*fm1+fz1,fm1); } if(fm1==0&&fm2==0) printf("%lld\n",fz1+fz2); } else { Print(fz1*fm2+fz2*fm1,fm1*fm2); } /*************************************************/ //- if(fm1==0||fm2==0) { if(fm1==0&&fm2!=0) { Print(fz1*fm2-fz2,fm2); } if(fm1!=0&&fm2==0) { Print(fz1-fz2*fm1,fm1); } if(fm1==0&&fm2==0) printf("%lld\n",fz1-fz2); } else { Print(fz1*fm2-fz2*fm1,fm1*fm2); } /***********************************************************/ //* if(fm1==0||fm2==0) { if(fm1==0&&fm2!=0) { Print(fz1*fz2,fm2); } if(fm1!=0&&fm2==0) { Print(fz1*fz2,fm1); } if(fm1==0&&fm2==0) printf("%lld\n",fz1*fz2); } else { Print(fz1*fz2,fm1*fm2); } /****************************************************/ // / if(fm1==0||fm2==0) { if(fm1==0&&fm2!=0) { Print(fz1*fm2,fz2); } if(fm1!=0&&fm2==0) { Print(fz1,fm1*fz2); } if(fm1==0&&fm2==0) Print(fz1,fz2); } else { Print(fz1*fm2,fm1*fz2); } } return 0; }
时间: 2024-08-06 11:14:24