首页 > 编程语言 >KY196 复数集合C++

KY196 复数集合C++

时间:2024-01-25 15:46:44浏览次数:28  
标签:string int C++ while 复数 heap include KY196

这题难点就是什么是复数的模了吧。

然后C++写个优先队列(大根堆)+操作符重载就行了。

#include<iostream>
#include<string>
#include<queue>
#include<math.h>
using namespace std;

struct node{
    int a;
    int b;
};
typedef struct node element;

int change(string s,int& i){
    string t;
    while(i<s.size()){
        if('0'<=s[i]&&s[i]<='9'){
            t.push_back(s[i]);
            i++;
        }else{
            break;
        }
    }
    return stoi(t);
}

bool operator< (element lhand,element rhand){
    long x=pow(lhand.a,2)+pow(lhand.b,2);
    long y=pow(rhand.a,2)+pow(rhand.b,2);
    if(x>y){
        return false;
    }else if(x==y){
        if(lhand.b<rhand.b){
            return false;
        }
    }
    return true;

}

int main(){
    int n;
    while(cin >> n ){
        char c;
        while(c=getchar()!='\n');
        priority_queue<element> heap;
        while(n!=0){
            string s;
            getline(cin,s);
            if(s[0]=='P'){
                if(heap.empty()){
                    cout <<"empty" <<'\n';
                }else{
                    cout << heap.top().a <<"+i" <<heap.top().b << '\n';
                    heap.pop();
                    cout <<"SIZE = " <<heap.size()<<'\n';
                }
            }else{
                cout <<"SIZE = " <<heap.size()+1<<'\n';
                int i=0;
                int a=0,b=0;
                for(;i<s.size();i++){
                    if('0'<=s[i]&&s[i]<='9'){
                        a=change(s,i);
                        break;
                    }
                }
                i++;
                for(;i<s.size();i++){
                    if('0'<=s[i]&&s[i]<='9'){
                        b=change(s,i);
                        break;
                    }
                }
                element* tem=new element ;
                tem->a=a;
                tem->b=b;
                heap.push(*tem);
            }
            n--;
        }
    }
    return 0;
}

结果如下:

标签:string,int,C++,while,复数,heap,include,KY196
From: https://www.cnblogs.com/llllmz/p/17986127

相关文章

  • C转C++速成浅入浅出系列——STL之map
    本系列为应付考研复试用,知识浅入浅出,很多地方不深究细节原理;如有谬误,欢迎大家指出。map【map:地图、图谱】理解为地图(我感觉跟python的字典【dictionary】一样)。一个map中包含了多个键值对,一个键值对可以理解为一个特殊的结构体。键值对:即包含关键字(即key)和值(即value或data)的......
  • C语言和C++中的空指针区别
    C语言中,空指针是NULL,是一个宏在C++中NULL似乎也可以用,但是C++中的NULL其实是有问题的。C++大佬在设计的时候可能没有考虑全面在C++98中,字面常量0既可以是一个整形数字,也可以是无类型的指针(void*)常量但是编译器默认情况下将其看成是一个整形常量,如果要将其按照指针方式来使......
  • 深入解析C++中sizeof和strlen的奥秘:区别、应用与技巧全揭秘!
     sizeof 和 strlen 是C++中用于处理字符串的两个不同的操作符,它们的作用和使用场景有很大的区别。sizeof操作符:区别:sizeof 是一个运算符,不是一个函数,用于获取一个类型或变量的字节大小。对于数组,sizeof 返回整个数组的字节大小。对于指针,sizeof 返回指针本身的......
  • C转C++速成浅入浅出系列——STL之vector
    本系列为应付考研复试用,知识浅入浅出,很多地方不深究细节原理;如有谬误,欢迎大家指出。vector【vector:矢量,向量】理解为向量、动态数组等。我想在我这种入门阶段,最常用的还是其动态数组的功能。需提供头文件#include<vector>创建可指定数组大小,和所有值的初始值;数组大小初始值......
  • C转C++速成浅入浅出系列——STL之set
    本系列为应付考研复试用,知识浅入浅出,很多地方不深究细节原理;如有谬误,欢迎大家指出。set【setof:集合】理解为集合。特点是①元素各不相同②元素会自动从小到大排序③初始时无法指定其大小需提供头文件#include<set> 创建注意初始时不能指定其大小。(不能说集合里有5个......
  • c++ openssl加密 解密
    #include<iostream>#include<boost/asio.hpp>#include<boost/beast.hpp>#include<boost/beast/websocket.hpp>#include<boost/asio/spawn.hpp>#include<json.hpp>#include<boost/filesystem.hpp>#include<fstrea......
  • 用C++11打造智能观察者模式:详解实现步骤完整示例代码
     观察者模式是一种行为设计模式,其中一个对象(主题)维护其依赖对象(观察者)的列表,当主题的状态发生变化时,它通知所有观察者。以下是一个使用C++11实现观察者模式的简单例子:定义观察者接口(Observer): 创建一个观察者接口,该接口包含观察者需要实现的更新方法。这个接口可以包含其他......
  • 1. C++ 开发环境
    C++开发环境VisualC++/GCC(G++)/Clang(Clang++)集成开发环境:VisualStudio/CodeLite/Code::blocks/CLion/Eclipse...工具:/usr/bin/timevalgrindcppreferenceCompilerexplorerC++Insights当前各版本编译器对C++20特性的支持情况:查看网站:https://......
  • C/C++ 常用输出流
    在程序设计中,数据输入/输出(I/O)操作是必不可少的,C++语言的数据输入/输出操作是通过I/O流库来实现的。C++中把数据之间的传输操作称为流,流既可以表示数据从内存传送到某个载体或设备中,即输出流,也可以表示数据从某个载体或设备传送到内存缓冲区变量中,即输入流。C++流涉及以下概念:标......
  • KY124 二叉搜索树C++
    先把BST建立起,然后递归遍历判断树就好了。#include<iostream>#include<string>usingnamespacestd;structnode{chardata;structnode*left;structnode*right;};typedefstructnodetree;tree*build(strings){inti=0;tree*root=NULL......