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 }

原文地址:https://www.cnblogs.com/archemiya/p/8490908.html

时间: 2024-10-27 07:54:46

p1696 数与连分数的相关文章

2013年第四届蓝桥杯——黄金连分数java

标题: 黄金连分数 黄金分割数0.61803... 是个无理数,这个常数十分重要,在许多工程问题中会出现.有时需要把这个数字求得很精确. 对于某些精密工程,常数的精度很重要.也许你听说过哈勃太空望远镜,它首次升空后就发现了一处人工加工错误,对那样一个庞然大物, 其实只是镜面加工时有比头发丝还细许多倍的一处错误而已,却使它成了“近视眼”!! 言归正传,我们如何求得黄金分割数的尽可能精确的值呢?有许多方法. 比较简单的一种是用连分数: 1 黄金数 = --------------------- 1

山科SDUST OJ Problem J :连分数

Problem J: 连分数 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 2723  Solved: 801[Submit][Status][Web Board] Description 一个高为n的连分数定义为 . 给出2个数,一个用p/q的方式表达,另一个用高度为n的连分数来表示,请你判断他们是否相等. Input 输入有多组,每组包含两部分用来表示两种形式的分数:第一部分是p和q(1 ≤ q ≤ p ≤ 10^18),表示分数p/q:然后是一

[JAVA][2013蓝桥杯预赛 JAVA本科B组][黄金连分数]

标题: 黄金连分数 黄金分割数0.61803... 是个无理数,这个常数十分重要,在许多工程问题中会出现.有时需要把这个数字求得很精确. 对于某些精密工程,常数的精度很重要.也许你听说过哈勃太空望远镜,它首次升空后就发现了一处人工加工错误,对那样一个庞然大物, 其实只是镜面加工时有比头发丝还细许多倍的一处错误而已,却使它成了"近视眼"!! 言归正传,我们如何求得黄金分割数的尽可能精确的值呢?有许多方法. 比较简单的一种是用连分数: 1 黄金数 = -------------------

黄金连分数【大数】

黄金分割数0.61803... 是个无理数,这个常数十分重要,在许多工程问题中会出现.有时需要把这个数字求得很精确. 对于某些精密工程,常数的精度很重要.也许你听说过哈勃太空望远镜,它首次升空后就发现了一处人工加工错误,对那样一个庞然大物,其实只是镜面加工时有比头发丝还细许多倍的一处错误而已,却使它成了“近视眼”!! 言归正传,我们如何求得黄金分割数的尽可能精确的值呢?有许多方法. 比较简单的一种是用连分数: 这个连分数计算的“层数”越多,它的值越接近黄金分割数. 请你利用这一特性,求出黄金分割

【实数系统】 01 - 万物皆数

1.2.3.……,自然数就好像是大自然的母语,它独立于人的思维而存在,甚至很多动物都会简单的计数.考古学有足够的证据表明,远远早于人类文明之前,人们就开始有意识的计数了.到了古希腊时期,以各种政治宗教团体为代表,人们对知识的认知达到了空前的程度,其中影响最大的当属“毕达哥拉斯学派”.毕达哥拉斯曾求学于古希腊圣贤,并游历了周边世界,回国后创办了学派.关于“毕达哥拉斯学派”的故事数不胜数,网络和史书上都有精彩的描述,这里就不多说了.值得一提的是该学派的信条“万物皆数”,这里的数就是指自然数,当然还包

【noip2003】 麦森数

题目描述 形如2P-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2P-1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=3021377,它有909526位.麦森数有许多重要应用,它与完全数密切相关. 任务:从文件中输入P(1000<P<3100000),计算2P-1的位数和最后500位数字(用十进制高精度数表示) 输入 文件中只包含一个整数P(1000<P<3100000) 输出 第一行:十进制高精度数2P-1的位数. 第2

CCF - 201409-1 - 相邻数对

问题描述 试题编号: 201409-1 试题名称: 相邻数对 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1. 输入格式 输入的第一行包含一个整数n,表示给定整数的个数. 第二行包含所给定的n个整数. 输出格式 输出一个整数,表示值正好相差1的数对的个数. 样例输入 610 2 6 3 7 8 样例输出 3 样例说明 值正好相差1的数对包括(2, 3), (6, 7), (7, 8). 评测用例规模与约定 1

java实现求一个数组里最大值和最小值之前缺省的数的算法

问题描述: 求一个数组里最大值和最小值之间缺省的数,例如 int arrDemo = {1, 3, 7};  那么就要输出最小值1和最大值7之间缺少的数字2,4,5,6 代码如下,有更好的思路欢迎大家在评论区留言讨论 1 package test; 2 3 public class Test { 4 5 static int[] array = { 6 -10,0,3,3,9 7 }; 8 9 private static void printEmptyItems(int[] array) {

1082 与7无关的数

1082 与7无关的数 题目来源: 有道难题 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 一个正整数,如果它能被7整除,或者它的十进制表示法中某个位数上的数字为7,则称其为与7相关的数.求所有小于等于N的与7无关的正整数的平方和. 例如:N = 8,<= 8与7无关的数包括:1 2 3 4 5 6 8,平方和为:155. Input 第1行:一个数T,表示后面用作输入测试的数的数量.(1 <= T <= 1000) 第2 - T + 1行