博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vijos p1696 数与连分数
阅读量:5295 次
发布时间:2019-06-14

本文共 2387 字,大约阅读时间需要 7 分钟。

描述

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

样例1

样例输入1

[2;3,7]
51/22

样例输出1

51/22
[2;3,7]

限制

出题人不透露

提示

多组测试数据:
...每一个测试点有多组数据...数据的组数不超过100组...
约分:
计算结果最后是要约分的...但是..在分数转向连分数的时候..
我们不保证输入的数据是约分.....
连分数的输入格式:
连分数的输入格式是按照wiki里写的...
第一个位置的分号应该是为了避免可能的歧义~..
English:
我们校内的时候又同学抱怨英文看不懂...可以访问这个页...蛮好用的...
或者在wiki左侧的语言栏里最下面找中文切换一下就行了...
Range:
数字的规模都很小...
也就是它们都不会超过longint范围里....
包括中间的数据...
连分数的项数也不会超过100项..

 

思路

对分数化连分数和连分数化分数分别思考,连分数化分数则为从后到前:相加然后取倒数;反过来更简单。

注意点:输出格式,2->[2] [2]->2 分数化简(求下最大公约数)

 

代码

1 #include 
2 #include
3 #include
4 5 void swap(int *, int *); 6 int gcd(int, int); 7 8 int main() { 9 char s[1000];10 int len,i;11 int fz=0,fm=0;12 13 while (scanf("%s", s) != EOF) {14 len = strlen(s);15 if (s[len-1]=='\n') s[len-1]='\0';16 if (s[0]=='[') {17 18 if (len==3 || len==4) printf ("%c\n",s[1]);19 else {20 fz=s[len-2]-'0';21 fm=1;22 for (i=len-4;i>=1;i-=2) {23 swap(&fm,&fz);24 fz=fz+fm*(s[i]-'0');25 }26 int g=gcd(fz,fm);27 fz=fz/g;28 fm=fm/g;29 printf ("%d/%d\n",fz,fm);30 } 31 } 32 else {33 int k=0;34 if (!strchr(s,'/')) {35 printf ("[%s]\n",s); 36 }37 else {38 sscanf (s,"%d/%d",&fz,&fm);39 int g=gcd(fz,fm);40 fz=fz/g;41 fm=fm/g;42 printf ("[");43 while (fz!=1) {44 if (k==1) printf (";");45 else if (k) printf (",");46 int num=fz/fm;47 printf ("%d",num);48 k++;49 fz=fz-num*fm;50 swap(&fz,&fm);51 }52 printf ("]\n");53 }54 } 55 }56 system("pause");57 return 0;58 }59 60 void swap(int *a, int *b) {61 int tmp;62 tmp = *a;63 *a = *b;64 *b = tmp; 65 }66 67 int gcd(int a,int b) {68 while (a!=b) {69 if (a>b) a = a - b;70 else b = b - a; 71 } 72 return a;73 }

 

转载于:https://www.cnblogs.com/yachen2018/p/8476846.html

你可能感兴趣的文章
KVO的实现原理
查看>>
php中的isset和empty的用法区别
查看>>
Datagrid中实现超链接方法小结
查看>>
.Net 序列化比较
查看>>
java线程类图
查看>>
当心不静的时候
查看>>
ajax VS websocket
查看>>
Android ViewPager 动画效果
查看>>
Android图片缓存之Bitmap详解
查看>>
Android ijkplayer详解使用教程
查看>>
Android UI-仿微信底部导航栏布局
查看>>
Android中pendingIntent的深入理解
查看>>
Android ActionBar
查看>>
Redis集群方案Codis部署手册
查看>>
MySQL 第六天
查看>>
python 笔记一
查看>>
pip和easy_install使用方式
查看>>
数据表与简单java类(一对多的关系)
查看>>
博弈论
查看>>
CSS3 - 如何给图片增加内阴影
查看>>