1062 最简分数(含测试点1问题)

1062 最简分数

一个分数一般写成两个整数相除的形式:N/M,其中 M 不为0。最简分数是指分子和分母没有公约数的分数表示形式。

现给定两个不相等的正分数 N​1​​ /M​1​​ 和 N​2​​ /M​2​​ ,要求你按从小到大的顺序列出它们之间分母为 K 的最简分数。

输入格式:
输入在一行中按 N/M 的格式给出两个正分数,随后是一个正整数分母 K,其间以空格分隔。题目保证给出的所有整数都不超过 1000。

输出格式:
在一行中按 N/M 的格式列出两个给定分数之间分母为 K 的所有最简分数,按从小到大的顺序,其间以 1 个空格分隔。行首尾不得有多余空格。题目保证至少有 1 个输出。

输入样例:

7/18 13/20 12

输出样例:

5/12 7/12

本题注意点:没有说前后两个分数第一个一定比第二个小,因此需要自己提前判断(测试点1的问题),两数是否有公共因子用gcd判断即可

在这里插入图片描述

#include<iostream>
#include<cstring>
#include<cmath>

using namespace std;

int gcd(int a,int b)
{
    return b? gcd(b,a%b):a;
}

int main()
{
    string m,n;
    int k;
    cin >> m >> n >>k;
    int i=0;
    int a=0,b=0,c=0,d=0;
    while(m[i]!='/')
    {
        a=a*10+m[i]-'0';
        i++;
    }
    i++;
    while(i<m.size())
    {
        b=b*10+m[i]-'0';
        i++;
    }
    i=0;
    while(n[i]!='/')
    {
        c=c*10+n[i]-'0';
        i++;
    }
    i++;
    while(i<n.size())
    {
        d=d*10+n[i]-'0';
        i++;
    }
    double l=(double)(k*a)/b;
    double r=(double)(k*c)/d;
    if(l>r)
        swap(l,r);
    int cnt=0;
    for(int j=(int)l+1;j<r;j++)
    {
        if(gcd(j,k)==1)
        {
            if(cnt!=0)
                printf(" ");
            if(cnt==0)
                cnt++;
            printf("%d/%d",j,k);
        }
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SVM(支持向量机)是一种常见的机器学习算法,用于进行分类和回归分析。在MATLAB中,可以使用SVM工具箱来对数据进行分类。 以下是一个简单的示例程序,通过SVM对一个数据集进行分类: ```matlab % 载数据 load fisheriris; % 将数据划分为训练集和测试集 trainData = meas(1:100,:); trainLabel = species(1:100); testData = meas(101:end,:); testLabel = species(101:end); % 构建SVM分类器模型 SVMModel = fitcsvm(trainData, trainLabel); % 预测测试集结果 predictedLabel = predict(SVMModel, testData); % 计算分类准确率 accuracy = sum(strcmp(predictedLabel, testLabel)) / numel(testLabel); % 显示结果 disp(['分类准确率为:' num2str(accuracy)]); ``` 该示例程序首先载了一个经典的鸢尾花数据集(fisheriris),然后将数据划分为训练集和测试集。接下来,通过fitcsvm函数构建了一个SVM分类器模型,并使用predict函数对测试集进行预测。最后,计算了分类准确率并将结果显示出来。 通过运行该程序,我们可以很简单地使用SVM算法对数据进行分类,并得到分类准确率。当然,这只是SVM在MATLAB中的基本应用,真实场景可能需要更复杂的模型和数据预处理方法。 ### 回答2: SVM(支持向量机)是一种常用的机器学习算法,用于分类和回归分析。在MATLAB中使用SVM进行简单程序测试的过程如下: 首先,导入所需的数据集。假设我们有一个带有标签的二维数据集,其中包两个类别。使用MATLAB的数据导入功能来读取数据集,并将数据集分成X和Y两个变量,其中X包输入特征,Y包相应的标签。 然后,创建SVM模型。通过调用svmtrain函数来创建SVM模型。此函数将X和Y作为输入,并允许您指定一些参数,例如内核函数和软边界参数等。在这里,我们选择使用默认的线性内核。 接下来,训练SVM模型。通过将训练数据传递给svmtrain函数来训练模型。该函数将返回一个训练好的模型,可以用于预测新的数据点。 测试SVM模型。使用svmclassify函数来预测新的数据点的类别。将测试数据传递给该函数,并使用训练好的模型进行预测。该函数将返回预测的类别标签。 最后,评估模型的性能。可以使用MATLAB中的一些度量指标,例如准确率、召回率和F1分数等来评估模型的性能。可以通过将预测结果与实际标签进行比较来计算这些指标。 总之,使用MATLAB进行简单的SVM程序测试包括导入数据集、创建和训练SVM模型、使用训练好的模型进行预测并评估模型的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值