p1696 数与连分数

背景
...

...:“这个简单...我们还是去刚才的海边呗...”
...:"其实今晚...我是有一定要完成的事情的..." .,
威尼斯真的是一个美丽的城市...很小的时候我就听说这个地方..

这一天..从贝鲁特归来的商队..除了布匹和香辛料...还带来的东方的数字....
也有人曾经讨论过它们的历史...
只是很长时间这些都不被那些数学家们所重视..

人们怀着敬畏的心情..小心的审视着这些新奇的东西...
而它们..给生活在这片土地上的人们所带来的..是很大的帮助..
...

描述
写一个程序...可以实现在连分数和分数之间的互相转换...

样例1
样例输入1
[2;3,7]
51/22
样例输出1
51/22
[2;3,7]

思路
由于题中需要互相转换,这里我们需要定义两个函数,分别模拟两者之间的转换。

代码

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 
 5 void go(int x,int y,int t);
 6 void come(int x,int y);
 7 int a[1000];
 8 
 9 int main(){
10     char x[1000];
11     while(scanf("%s",x)!=EOF){
12         memset(a, 0, sizeof(a));
13         if(x[0]=='['){
14             int t=1,q=1;
15             while(x[q]!=']'){
16                 if(x[q]>='0'&&x[q]<='9'){
17                     a[t]=a[t]*10+x[q]-'0';
18                 }
19                 else
20                     t++;
21                 q++;
22             }
23             go(a[t],1,t-1);
24         }
25         else{
26             int t=1,q=0;
27             while(x[q]!='\n'&&x[q]!=EOF&&x[q]!='\0'){
28                 if(x[q]>='0'&&x[q]<='9'){
29                     a[t]=a[t]*10+x[q]-'0';
30                 }
31                 else
32                     t++;
33                 q++;
34             }
35             int m=a[1],n=a[2];
36             come(m,n);
37         }
38     }
39     return 0;
40 }
41 
42 void go(int x,int y,int t){
43     int i;
44     for(i=t;i>=1;i--){
45         int c=x;
46         x=y;
47         y=c;
48         x=x+y*a[i];
49     }
50     printf("%d",x);
51     if(y!=1)
52         printf("/%d",y);
53     printf("\n");
54     return;
55 }
56 
57 void come(int x,int y){
58     int e=1,k;
59     k=x/y;
60     printf("[%d",k);
61     x=x-k*y;
62     while(x!=0){
63         int c=x;
64         x=y;
65         y=c;
66         k=x/y;
67         x=x-k*y;
68         if(e==1)
69             printf(";%d",k),e=0;
70         else
71             printf(",%d",k);
72     }
73     printf("]\n");
74 }

 

posted on 2018-03-01 22:37  archemiya  阅读(200)  评论(0编辑  收藏  举报

导航