zoukankan      html  css  js  c++  java
  • pat乙级1034

    1.vs2013不能用scanf,改为scanf_s,但是提交时不能用scanf_s,用scanf。。。

    1 scanf_s("%lld/%lld %lld/%lld", &a[0], &a[1], &b[0], &b[1]);

    2.c++中数组作为函数参数时传递的是地址,会改变实参的值。

    3.用printf输出string型变量时要加上“.c_str()”:

    1 printf("%s + %s = %s
    ", simple(a).c_str(), simple(b).c_str(), simple(r).c_str());

    4.类型别名:

    1 using LL = long long;

    相乘时可能会超出整型范围,用long long。

    代码:

     1 #include <iostream>
     2 #include <string>
     3 using namespace std;
     4 using LL = long long;//类型别名
     5 
     6 LL gcd(LL a, LL b)
     7 {
     8     if (b == 0)
     9         return a;
    10     return gcd(b, a % b);
    11 }
    12 
    13 string simple(LL a[2])
    14 {
    15     LL m = a[0], n = a[1];
    16     if (n < 0)
    17     {
    18         m = -m;
    19         n = -n;
    20     }
    21     string s;
    22     char c;
    23     if (m < 0)
    24     {
    25         m = -m;
    26         c = '-';
    27     }
    28     else c = '+';
    29 
    30     LL g = gcd(m, n);//分子分母最大公约数
    31     m = m / g;
    32     n = n / g;
    33 
    34     LL r = m % n;
    35     LL k = m / n;
    36     if (k) s = to_string(k);
    37     if (r && k) s += " ";
    38     if (r) s = s + to_string(r) + "/" + to_string(n);
    39     if (!k && !r) s = "0";
    40 
    41     if (c == '-') s = "(-" + s + ")";
    42     return s;
    43 }
    44 void add(LL a[2], LL b[2])
    45 {
    46     LL r[2];
    47     r[0] = a[0] * b[1] + b[0] * a[1];
    48     r[1] = a[1] * b[1];
    49     printf("%s + %s = %s
    ", simple(a).c_str(), simple(b).c_str(), simple(r).c_str());
    50 }
    51 void sub(LL a[2], LL b[2])
    52 {
    53     LL r[2];
    54     r[0] = a[0] * b[1] - b[0] * a[1];
    55     r[1] = a[1] * b[1];
    56     printf("%s - %s = %s
    ", simple(a).c_str(), simple(b).c_str(), simple(r).c_str());
    57 }
    58 void motify(LL a[2], LL b[2])
    59 {
    60     LL r[2];
    61     r[0] = a[0] * b[0];
    62     r[1] = a[1] * b[1];
    63     printf("%s * %s = %s
    ", simple(a).c_str(), simple(b).c_str(), simple(r).c_str());
    64 }
    65 void divide(LL a[2], LL b[2])
    66 {
    67     LL r[2];
    68     r[0] = a[0] * b[1];
    69     r[1] = a[1] * b[0];
    70     if (r[1])
    71         printf("%s / %s = %s
    ", simple(a).c_str(), simple(b).c_str(), simple(r).c_str());
    72     else
    73         printf("%s / %s = Inf
    ", simple(a).c_str(), simple(b).c_str());
    74 }
    75 int main()
    76 {
    77     LL a[2], b[2];
    78     scanf_s("%lld/%lld %lld/%lld", &a[0], &a[1], &b[0], &b[1]);
    79     
    80     add(a, b);
    81     sub(a, b);
    82     motify(a, b);
    83     divide(a, b);
    84     
    85     return 0;
    86 }
  • 相关阅读:
    Django实战(4):scaffold生成物分析
    Django实战(3):Django也可以有scaffold
    创建第一个模型类
    1. 实战系列的开发目标
    Django第一步
    URLconf+MTV:Django眼中的MVC
    mp4文件格式解析
    傅里叶分析之掐死教程(完整版)更新于2014.06.06
    关于Spinlock机制的一点思考
    spinlock变量没有初始化
  • 原文地址:https://www.cnblogs.com/lxc1910/p/8511929.html
Copyright © 2011-2022 走看看