zoukankan      html  css  js  c++  java
  • SSL JudgeOnline 2253——新型计算器

    Description

      上次的评选活动杰杰帮了苗苗大忙,于是苗苗也参加了信息学奥赛小组,此事暂且不提,来说说数学。初一上学期主要学习有理数,每次的作业都是大量的分数计算题,苗苗都会算,就是嫌麻烦,目前的计算器又不能进行分数运算,于是她就想自己写一个计算器程序来实现分数的运算。该计算器能够进行分数的加、减、乘、除运算,并能将结果化为最简分数和带分数(设计出来可别被数学老师看到,否则要挨批评了,呵呵)。假设参加运算的分数都不是带分数(可以为假分数),并将整数看作分母为1的分数。

    Input

    输入文件computer.in共有三行,第一行为第一个分数的分子和分母,第二行为运算符,第三行为第二个分数的分子和分母;分子和分母都是正整数(小于等于32768)。确保数据有意义,并且最终结果为正数。

    Output

    以q/p的形式输出到输出文件computer.out中,其结果为最简分数;是假分数的还要化为带分数,先输出整数分数,再输出后面部分。

    Sample Input

    样例1
    2 3
    +
    1 4

    11/12

    样例2

    3 1

    2 5

    2 3/5

    样例3
    4 5
    *
    1 2

    2/5

    样例4
    3 7
    /
    1 2

    6/7


    这题只用进行运算,然后将分数化简输出就得了。


    代码如下:

    var x,y,x1,x2,y1,y2,n:longint;
        f:char;
    
    function pd(x,y:longint):longint;
    var  i:longint;
    begin
      for i:=x downto 2 do
        if (x mod i=0)and(y mod i=0) then exit(i);
      exit(0);
    end;
    
    function zx(x,y:longint):longint;
    var n:longint;
    begin
      if y>x then n:=y
             else n:=x;
      while (n mod y<>0)or(n mod x<>0) do inc(n);
      zx:=n;
    end;
    
    procedure doingc;
    var t:longint;
    begin
      t:=y1; y1:=y2; y2:=t;
      x:=y2*x2;
      y:=y1*x1;
    end;
    
    procedure doingch;
    begin
      x:=y2*x2;
      y:=x1*y1;
    end;
    
    procedure doingj;
    begin
      if x2<>y2 then begin x:=zx(x2,y2); y:=x div x2*x1-x div y2*y1; end
                else begin x:=y2; y:=x1-y1; end;
    
    end;
    
    procedure doingja;
    begin
      if x2<>y2 then
        begin
          x:=zx(x2,y2);
          y:=x div x2*x1+x div y2*y1;
        end
      else begin x:=y2; y:=x1+y1; end;
    end;
    
    begin
      readln(x1,x2);
      readln(f);
      readln(y1,y2);
      case f of
        '+':doingja;
        '-':doingj;
        '*':doingch;
        '/':doingc;
      end;
      if y>x then write(y div x,' ');
      y:=y mod x;
      if y=0 then halt;
      n:=pd(x,y);
      if n=0 then write(y,'/',x)
             else write(y div n,'/',x div n);
    end.
  • 相关阅读:
    js操作cookie
    非常好的前端报表控件,值得收藏一下
    html5 跳到拨打电话功能
    C# 判断客户端是PC还是手机登录
    Oracle RAW类型使用
    多条Json数据转换为泛型数据
    将指定的对象序列化成 JSON 数据。
    ASP.NET MVC4(Razor)从客户端中检测到有潜在危险的 Request.Form 值
    http://v3.bootcss.com/getting-started/
    SQL日期比较 .
  • 原文地址:https://www.cnblogs.com/Comfortable/p/8412458.html
Copyright © 2011-2022 走看看