寒假刷题第十天

2024-01-21 14:20
文章标签 刷题 寒假 第十天

本文主要是介绍寒假刷题第十天,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PTA甲级

1060 Are They Equal

# 测试点5错误
l = input().split()
n = int(l.pop(0))
a = '{:e}'.format(float(l[0]))
b = '{:e}'.format(float(l[1]))
idx , idx1 = a.index('e') , b.index('e')
x , y = int(a[idx + 1:]) + 1 if a[0] != '0' else int(a[idx + 1:]) , int(b[idx + 1:]) + 1 if b[0] != '0' else int(b[idx + 1:])
a = '0.' + a.replace('.' , '')
b = '0.' + b.replace('.' , '')
xa , xb = '*10^' + str(x) , '*10^' + str(y)
a , b = a[:min(idx - 1 , n + 2)] , b[:min(idx1 - 1 , n + 2)]
a += '0' * (n - len(a) + 2)
b += '0' * (n - len(b) + 2)
a += xa
b += xb
if a == b:print("YES" , a)
else:print("NO" , a , b)
#include<iostream>
using namespace std;
int getC(string x){  //返回.的indexint c = 0;while (c < x.size()&&x[c]!='.')c++;return c;
}
string floatToSpecial(string x,int k){int c = getC(x);//使用substr(index)去除最前面多余的0int significant = 0;if(c>1){while(x[significant]=='0'){significant++;}if(significant==c){significant--;}x = x.substr(significant);}c = getC(x);//使用substr(0,l)去除小数点后面多余的0int index = x.size() - 1, l = 0;while(c<index&&x[index]=='0'){index--;l++;}x = x.substr(0, x.size() - l);c = getC(x);int zhishu = c;string pre = "";if(x[0]=='0'){c++;zhishu = 0;while(c<x.size()&&x[c]=='0'){c++;zhishu--;}for (int i = 0; i < k && c < x.size();i++,c++){pre += x[c];}}else if(c<k&&c>0&&x[0]!='0'){for (int i = 0; i < k+1 && i < x.size();i++)if(x[i]!='.'){pre += x[i];}}else if(c>=k){for (int i = 0; i < k && i < x.size(); i++){pre += x[i];}} //不足k位的话末尾补0int num = k - pre.size();for (int i = 0; i < num;i++){pre += '0';}return "0." + pre + "*10^" + to_string(zhishu);
}
int main(){string a, b;int k;cin >> k >> a >> b;string an1 = floatToSpecial(a, k), ans2 = floatToSpecial(b, k);int flag = an1 == ans2;if(flag){cout << "YES" << " " << an1;}else{cout << "NO"  << " " << an1 << " " << ans2;}return 0;
}

1063 Set Similarity

可以使用python的交集和并集

d = {}
n = int(input())
for i in range(1 , n + 1):l = list(map(int , input().split()))l.pop(0)d[i] = l
for _ in range(int(input())):a , b = map(int , input().split())nt = len(set(d[a] + d[b]))nc = len(set(d[a]) & set(d[b]))res = f'{(nc / nt) * 100:.1f}%'print(res)

1064 Complete Binary Search Tree

二叉搜索树中序遍历是有序的

完全二叉树从1开始编号,之后左孩子为2 * x

#include<iostream>
#include<algorithm>using namespace std;const int N = 1010;
// cbt完全二叉树 左儿子2*x
// 二叉搜索树 中序遍历 有序的
// cbt对应二叉搜索树
int n;
int in[N] , level[N] , k = 0;void dfs(int u)
{if(2 * u <= n) dfs(2 * u); // 左孩子level[u] = in[k ++];if(2 * u + 1 <= n) dfs(2 * u + 1);// 右孩子
}int main()
{cin >> n;for(int i = 0;i < n;i ++)cin >> in[i];sort(in , in + n);dfs(1);for(int i = 1;i <= n;i ++){if(i != 1) cout << " ";cout << level[i];}return 0;
}

这篇关于寒假刷题第十天的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/629815

相关文章

【每日刷题】Day113

【每日刷题】Day113 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 91. 解码方法 - 力扣(LeetCode) 2. LCR 098. 不同路径 - 力扣(LeetCode) 3. 63. 不同路径 II - 力扣(LeetCode) 1. 91. 解码方法 - 力扣(LeetCode) //思路:动态规划。 cl

hot100刷题第1-9题,三个专题哈希,双指针,滑动窗口

求满足条件的子数组,一般是前缀和、滑动窗口,经常结合哈希表; 区间操作元素,一般是前缀和、差分数组 数组有序,更大概率会用到二分搜索 目前已经掌握一些基本套路,重零刷起leetcode hot 100, 套路题按套路来,非套路题适当参考gpt解法。 一、梦开始的地方, 两数之和 class Solution:#注意要返回的是数组下标def twoSum(self, nums: Lis

代码随想录刷题day25丨491.递增子序列 ,46.全排列 ,47.全排列 II

代码随想录刷题day25丨491.递增子序列 ,46.全排列 ,47.全排列 II 1.题目 1.1递增子序列 题目链接:491. 非递减子序列 - 力扣(LeetCode) 视频讲解:回溯算法精讲,树层去重与树枝去重 | LeetCode:491.递增子序列_哔哩哔哩_bilibili 文档讲解:https://programmercarl.com/0491.%E9%80%92%E

代码随想录刷题day24丨93.复原IP地址 ,78.子集 , 90.子集II

代码随想录刷题day24丨93.复原IP地址 ,78.子集 , 90.子集II 1.题目 1.1复原IP地址 题目链接:93. 复原 IP 地址 - 力扣(LeetCode) 视频讲解:回溯算法如何分割字符串并判断是合法IP?| LeetCode:93.复原IP地址_哔哩哔哩_bilibili 文档讲解:https://programmercarl.com/0093.%E5%A4%8

【笔记】数据结构刷题09

快速排序 215. 数组中的第K个最大元素 class Solution {public:int findKthLargest(vector<int>& nums, int k) {return divide(nums,0,nums.size()-1,nums.size()-k);}int divide(vector<int>& nums,int left,int right,int k)

C语言:刷题日志(1)

一.阶乘计算升级版 本题要求实现一个打印非负整数阶乘的函数。 其中n是用户传入的参数,其值不超过1000。如果n是非负整数,则该函数必须在一行中打印出n!的值,否则打印“Invalid input”。 首先,知道阶乘是所有小于及等于该数的正整数的积,并且0的阶乘为1。那么我们先来个简单的阶乘计算吧。 #include<stdio.h>int Fact(int n){if (n <=

2014级寒假特训之并查集专题

Problem A: Double和XXZ的生日宴请 Time Limit: 1 Sec   Memory Limit: 128 MB Submit: 9   Solved: 7 [ Submit][ Status][ Web Board] [ Edit] [ TestData] Description Double 和 XXZ同一天生日,他们俩30岁生日那天,当年

【每日刷题】Day112

【每日刷题】Day112 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 1137. 第 N 个泰波那契数 - 力扣(LeetCode) 2. 面试题 08.01. 三步问题 - 力扣(LeetCode) 3. LCR 088. 使用最小花费爬楼梯 - 力扣(LeetCode) 1. 1137. 第 N 个泰波那契数 - 力扣(LeetCo

【数据结构】【java】leetcode刷题记录--链表

简介 链表是一种常见的基础数据结构,它由一系列节点组成,每个节点包含数据域和指向下一个节点的指针。在Java中,链表通常用于实现动态数据结构,因为它可以根据需要动态地增加或减少节点。 链表简介: 节点结构:链表中的每个元素称为节点(Node),每个节点包含两部分:数据域(存储数据)和指针域(存储下一个节点的地址)动态性:链表的长度不是固定的,可以根据需要动态地增减节点。内存分配:链表中的节点

代码随想录 刷题记录-28 图论 (5)最短路径

一、dijkstra(朴素版)精讲 47. 参加科学大会 思路 本题就是求最短路,最短路是图论中的经典问题即:给出一个有向图,一个起点,一个终点,问起点到终点的最短路径。 接下来讲解最短路算法中的 dijkstra 算法。 dijkstra算法:在有权图(权值非负数)中求从起点到其他节点的最短路径算法。 需要注意两点: dijkstra 算法可以同时求 起点到所有节点的最短路径权值不