zoukankan      html  css  js  c++  java
  • PTA乙级 (*1034 有理数四则运算 (20分)(string.append()))

    1034 有理数四则运算 (20分)

    https://pintia.cn/problem-sets/994805260223102976/problems/994805287624491008

    本题代码:

    #include <iostream>
    #include <cmath>
    #include <algorithm>
    #include <cstdio>
    #include <string>
    #include <cstring>
    typedef long long ll;
    using namespace std;
    ll gcd(ll a,ll b)
    {
    	return b?gcd(b,a%b):a;
    }
    string print(ll a,ll b)
    {
    	ll k=gcd(a,b);
    	a=a/k;b=b/k;
    	if(a==0) return "0";
    	string s;
    	int flag=0;
    	if(b<0) {a=-a;b=-b;}
    	if(a<0) {s.append("(-");a=-a;flag=1;}
    	if(a>=b) s.append(to_string(a/b));
    	if(a>=b&&a%b) s.insert(s.end(),' ');
    	a=a%b;
    	if(a)
    	{
    		s.append(to_string(a));
    		s.insert(s.end(),'/');
    		s.append(to_string(b));
    	}
    	if(flag) s.insert(s.end(),')');
    	return s;
    }
    int main()
    {
    	ll a1,a2,b1,b2;
    	char chr='/';
    	cin>>a1>>chr>>b1;
    	cin>>a2>>chr>>b2;
    	cout<<print(a1,b1)<<" + "<<print(a2,b2)<<" = "<<print(a1*b2+a2*b1,b1*b2)<<endl;
    	cout<<print(a1,b1)<<" - "<<print(a2,b2)<<" = "<<print(a1*b2-a2*b1,b1*b2)<<endl;
    	cout<<print(a1,b1)<<" * "<<print(a2,b2)<<" = "<<print(a1*a2,b1*b2)<<endl;
    	if(b1*a2) cout<<print(a1,b1)<<" / "<<print(a2,b2)<<" = "<<print(a1*b2,b1*a2)<<endl;
    	else cout<<print(a1,b1)<<" / "<<print(a2,b2)<<" = Inf
    ";
    	return 0;
    }
    

      

    知识点:string::append  http://www.cplusplus.com/reference/string/string/append/

    // appending to string
    #include <iostream>
    #include <string>
    
    int main ()
    {
      std::string str;
      std::string str2="Writing ";
      std::string str3="print 10 and then 5 more";
    
      // used in the same order as described above:
      str.append(str2);                       // "Writing "
      str.append(str3,6,3);                   // "10 "
      str.append("dots are cool",5);          // "dots "
      str.append("here: ");                   // "here: "
      str.append(10u,'.');                    // ".........."
      str.append(str3.begin()+8,str3.end());  // " and then 5 more"
      str.append<int>(5,0x2E);                // "....."
    
      std::cout << str << '
    ';
      return 0;
    }
    
    //Output:
    //Writing 10 dots here: .......... and then 5 more.....  
    天晴了,起飞吧
  • 相关阅读:
    Day 22 初识面向对象
    Day 21 内存处理与正则
    Day 20 常用模块(三)
    Day 18 常用模块(二)
    url解析
    jQuery---扩展事件
    jQuery---文档操作
    jQuery---属性操作
    jQuery---基本语法
    CSS---常用属性总结
  • 原文地址:https://www.cnblogs.com/jianqiao123/p/12261594.html
Copyright © 2011-2022 走看看