6 条题解

  • 3
    @ 2022-8-9 19:08:21
    #include<bits/stdc++.h>
    using namespace std;
    double a,b;
    int ansInt; // 化为整型后的a/b
    char chu; // chu是除,没什么用,用来抵消掉题目里那没用的/而已
    int main(){
        ios::sync_with_stdio(false); // 输入输出加速
        cin.tie(0);
        cout.tie(0);
        cin>>a>>chu>>b; // 输入abcd
        ansInt=a/b; // 向下取整结果
        if(a/b==ansInt){ // 如果a/b是不是整数,那么必然!=ansInt
            cout<<ansInt; // 符合条件直接输出就行了
        }else{
            // __gcdd(x,y)为C++算法库内置的计算最小公约数函数 注意前面是两条英文下划线
            int gcdd=__gcd(int(a),int(b)); // 计算分子和分母最小公约数
            cout<<a/gcdd<<"/"<<b/gcdd;
        }
        return 0;
    }
    
    • 2
      @ 2022-7-18 18:07:23
      #include <iostream>
      using namespace std;
      int a , b , d;
      char c ;
      int gcd(int x , int y){//辗转相除法求最大公因数
      	if(y == 0)
      		return x ;
      	return gcd(y,x%y);
      }
      int main(){
      	cin >> a >> c >> b ;//输入,s存储'/'
      	d = gcd(a,b);//赋值比再算一次省时间(虽然也没省多少)
      	cout << a/d;//输出分子
      	if(b != d)//若b == d 则可以整除,不必输出,反之亦然
      		cout << '/' << b/d;//输出分数线+分母
      	return 0 ;
      }
      
      • 1
        @ 2022-6-30 14:48:51
        #include <iostream>//懒得用万能头~~~
        using namespace std;
        int a , b;
        char s;
        bool f;
        int main()
        {
        	cin >> a >> s >> b;
        	int x = a , y = b;
        	if(a % b == 0)//特殊情况
        	{
        	    cout << a / b; 
        	    return 0;
            }
        	if(a == 1 || b == 1)
        		cout << "1/1";
        	while(1)//t为最大公因数
            {
        		int t = a % b;
        		if(t == 0) 
                {
                    break;
                }
        		else
                {
        			a = b;
        			b = t;
        		}
        	}
        	if(b > 1)
        	{
        		cout << x / b << "/" << y / b;
        	}
        	else
        	{
        		cout << x << "/" << y;
        	}
        	return 0;
        }
        

        希望对大家有帮助

        • 0
          @ 2022-9-25 18:46:58

          😄 解决这个题分三步:

          1. 字符串分割出分子和分母

          2. 求出最大公约数,进行约分(经典辗转相除法)

          3. 输出最简分数(注意判断分母为1的情况) 先来看第一步:

            string s;
             cin >> s;
             for (int i = 0; i < s.size(); i++)
             {
             	if (s[i] == '/')
             	{
             		a = stoi(s.substr(0, i));
             		b = stoi(s.substr(i+1, s.size() - i));
             	}
             }
            

          接着第二步就是求最大公约数:

          // 辗转相除法求最大公约数 
          int CommFactor(int m, int n)
          {
          	int z = n;
          	while (m % n != 0)
          	{
          		z = m % n;
          		m = n;
          		n = z;
          	}
          	return z;
          }
          

          然后第三步判断并输出:

          if (b == 1 || b / CommFactor(a, b) == 1)
          {
          	cout << a / CommFactor(a, b);
          }
          else
          {
          	cout << a / CommFactor(a, b) << '/' << b / CommFactor(a, b);
          }
          
          • -4
            @ 2022-4-24 16:45:03

            写题解请注意

            鼓励大家写题解,但注意题解格式。

            题解一定要有思路解析或代码注释,能否让别人理解你的思路

            也是你的能力的检验,不要只放无意义的代码给大家复制,那就失去了做题的初心。

            给代码两端加上这个会舒服一些

            ```cpp

            你的代码

            ```

            </span>

            这个点在键盘的左上角tab上面那个键,注意切换输入法

            #include<iostream>
            using namespace std;
            int main()
            {
                int n;
                cin>>n;//这是一个注释
                return 0;
            } 
            

            请注意严禁抄袭题解,写题解不要只放代码,需加上你的思路或代码注释。

            抄袭题解一经发现直接取消成绩。

            题解被删除的可能

            1. 代码不符合格式规范
            2. 没有思路讲解或者没有注释,
            3. 无意义的题解

            大家携手共同维护一个良好的编程环境,如果一经发现,多次作乱。可能会被管理员拉黑,请注意,一旦拉黑即失去登陆资格。

            • -5
              @ 2022-9-13 13:47:47
              #include<bits/stdc++.h>
              using namespace std;
              double a,b;
              int ansInt; // 化为整型后的a/b
              char chu; // chu是除,没什么用,用来抵消掉题目里那没用的/而已
              int main(){
                  ios::sync_with_stdio(false); // 输入输出加速
                  cin.tie(0);
                  cout.tie(0);
                  cin>>a>>chu>>b; // 输入abcd
                  ansInt=a/b; // 向下取整结果
                  if(a/b==ansInt){ // 如果a/b是不是整数,那么必然!=ansInt
                      cout<<ansInt; // 符合条件直接输出就行了
                  }else{
                      // __gcdd(x,y)为C++算法库内置的计算最小公约数函数 注意前面是两条英文下划线
                      int gcdd=__gcd(int(a),int(b)); // 计算分子和分母最小公约数
                      cout<<a/gcdd<<"/"<<b/gcdd;
                  }
                  return 0;
              }
              
            • 1

            信息

            ID
            1276
            时间
            1000ms
            内存
            256MiB
            难度
            4
            标签
            递交数
            226
            已通过
            103
            上传者