zoukankan      html  css  js  c++  java
  • 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]!='
    '&&x[q]!=EOF&&x[q]!=''){
    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("
    ");
    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("]
    ");
    74 }
  • 相关阅读:
    理解事件驱动select,poll,epoll三种模型
    谈谈对线程与进程的理解
    5-3.首行缩进
    5-2.行高
    5-1.字间距
    4-6.字体样式重置
    4-5.字体风格
    4-4.字体粗细
    4-3.字体颜色设置
    4-2.字体设置
  • 原文地址:https://www.cnblogs.com/archemiya/p/8490908.html
Copyright © 2011-2022 走看看