杭电OJ2093 有详细注解

这篇博客详细介绍了杭电在线评测系统OJ2093的解题策略,包括输入格式、解题思路和成绩排名的计算方法。通过使用结构体和排序函数,博主分享了如何实现对参赛者成绩的有效管理和输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路
题目要求输入为总共的题数和罚分数
输入次数为一直循环输入每个人的名字和每道题的分数
用一个结构体输出每个人的成绩排名
成绩排名需要写一个判断函数用于排序,这里可以参考C++排序函数的用法

#include<string>
#include<iostream>  //cin输入的库函数
#include<algorithm>  //sort函数库函数
#include<stdio.h>
using namespace std;
struct student
{
    string name;
    int num;
    int delscore;
};
bool cmp(student a,student b)
{
    return a.num!=b.num? a.num>b.num:a.delscore<b.delscore;
}
//定义一个输出的结构体
int main()
{
    int n,m,d,fail,time; //n为考试题数,m为每道题的罚分,fail为提交错误的次数,time为提交正确的耗时
    string str;
    student stu[1000];
    cin>>n>>m;
    d=0;
    while(cin>>stu[d].name) //因为没有规定输入行数,所以用while循环输入name可以保证循环不会结束
    {
        stu[d].num=0;        //清洗数据
        stu[d].delscore=0;
        for(int i=0;i<n;i++)  //遍历输入n道题
        {
            fail=0;
            time=0;
            cin>>str;   //输入每道题的数据
            if(str[0
### HDU OJ 2093 C++ 解决方案 对于编号为2093的问题,在杭电在线评测系统(HDU OJ)上,该题目涉及的是关于数论中的素数判定以及大整数处理的内容[^1]。 #### 题目描述简化 给定两个正整数 \(A\) 和 \(B\), 判断是否存在一个质数 \(P\) ,使得 \(A \times P = B\) 。如果存在这样的质数,则输出 "Yes";否则输出 "No". #### 关键概念解析 - **质数**: 只能被1和它本身整除的大于1的自然数称为质数。 - **大整数运算**: 当数值超出基本数据类型的表示范围时, 使用特殊的数据结构或算法来完成计算过程。 #### 实现思路 为了高效解决这个问题,可以采用试除法来进行质因数分解。具体来说就是从小到大地枚举可能成为因子的小于等于平方根的所有奇数,并尝试去除这些因子直到无法再分为止。最后剩下的部分要么是一个大于当前最大测试值的合数(此时返回否),要么就是一个更大的质数(此时满足条件)。 下面是具体的实现代码: ```cpp #include <iostream> using namespace std; bool isPrime(long long n){ if (n <= 1) return false; for (long long i = 2; i * i <= n ; ++i) { if(n % i == 0)return false; } return true; } int main(){ int T; cin >> T; while(T--){ long long a,b; cin>>a>>b; if(a==1&&isPrime(b)){ cout<<"Yes"<<endl; continue; }else if((b%a)!=0 || b/a<a){ cout << "No\n"; continue; } bool flag=true; for(int i=2;i*i<=a && flag;++i){ if(a%i==0){ if(b%(a/i)==0&&(a/i)>1){ if(isPrime(a/i))cout<<"Yes\n"; else cout <<"No\n"; }else{ if(isPrime(i))cout<<"Yes\n"; else cout <<"No\n"; } flag=false; } } if(flag){ if(isPrime(b/a))cout<<"Yes\n"; else cout <<"No\n"; } } } ``` 此程序首先定义了一个辅助函数`isPrime()`用于判断某个数是否为质数。接着在主函数中读取输入并按照上述逻辑进行判断,最终给出相应的结果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值