CCF计算机软件能力认证202309-2坐标变换(其二)(C语言)

ccf-csp计算机软件能力认证202309-2坐标变换(其二)(C语言版)


题目内容:

问题描述
在这里插入图片描述

输入格式
在这里插入图片描述

输出格式
在这里插入图片描述

样例输入

10 5
2 0.59
2 4.956
1 0.997
1 1.364
1 1.242
1 0.82
2 2.824
1 0.716
2 0.178
2 4.094
1 6 -953188 -946637
1 9 969538 848081
4 7 -114758 522223
1 9 -535079 601597
8 8 159430 -511187

样例输出

-1858706.758 -83259.993
-1261428.46 201113.678
-75099.123 -738950.159
-119179.897 -789457.532
114151.88 -366009.892

样例解释

请添加图片描述

评测用例规模与约定
在这里插入图片描述
评分方式

如果你输出的浮点数与参考结果相比,满足绝对误差不大于 0.1,则该测试点满分,否则不得分。

提示
在这里插入图片描述

解题思路

  1.第一步分析问题,n个操作,m个坐标,对每个坐标的操作是n个操作里的某个区间,鉴于此首先自然而然想到的肯定就是存储下来所有的操作,然后对于每个坐标进行for循环这一系列操作。但是最终成绩只有80分,所以这个思路当数据量比较大时不符合题目要求。
  2.简化问题,既然最直接的方法不可以,那我们就尝试简化数学问题,参考第一题,这一题肯定也是将伸缩量和旋转角度归一至一个值,旋转很多次,最终也只是旋转了一个固定的角度,伸缩同理。所以既然是一系列操作里的某个区间,那我们如何能够快速的获得这个区间的伸缩量和旋转角度呢?
  3.解决问题,从普通到特殊,假如现在这个区间是所有的操作,那么只需要从第一步到最后一步逐步加减乘除就可以,假设现在不想要最后一步了,减去相应的旋转角度或是除去相应的伸缩量就可以,不想要第一步操作也是同理。自然而然就能想到,每到一个节点,我们存储从第一步到这个节点的所有变换,那么例如我们现在想要第四步到第十步的变换,那么只需要第一步到第十步的变换减去第一步到第三步的变换即可,相应的减去相应的弧度,除去相应的伸缩量,至此问题得到了解决。
  4.最终由于每个数据只用一次,我们采用边存边用的形式,对于每一个输入的操作,进行汇总并存入新的数组,代表从第一步到现在所有操作的汇总。最后对于输入的操作区间以及坐标,进行相应的删减后按照题目提供的计算公式计算并输出即可。

提交后得100分的C语言程序如下:

#include<stdio.h>
#include<math.h>int main() {int n, m, i, flag, a, b, x, y;scanf("%d%d", &n, &m);double temp, rad = 0, k = 1, nrad[n+1], nk[n+1];nrad[0] = 0;nk[0] = 1;for (i = 1; i <= n; i++) {scanf("%d%lf", &flag, &temp);if (flag == 1) k = k * temp;else rad = rad + temp;nk[i] = k;nrad[i] = rad;}while (m--) {scanf("%d%d%d%d", &a, &b, &x, &y);k = nk[b] / nk[a-1];rad = nrad[b] - nrad[a-1];printf("%lf %lf\n", x * k * cos(rad) - y * k * sin(rad), x * k * sin(rad) + y * k * cos(rad));}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/202406.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络之网络传输,三次握手和四次挥手

网络传输通过高低电压 流 基本类型数组 低电压转高电压&#xff0c;通过网卡 传输模式&#xff1a; 全双工&#xff1a;互相传输且能同时传输 半双工&#xff1a;互相传输但是不能同时传输 单工&#xff1a;单向传输&#xff0c;&#xff08;键盘&#xff0c;显示器&#…

kubernetes详解——从入门到入土(更新中~)

k8s简介 编排工具&#xff1a;系统层面ansible、saltstackdocker容器docker compose docker swarm docker machinedocker compose&#xff1a;实现单机容器编排docker swarm&#xff1a;实现多主机整合成为一个docker machine&#xff1a;初始化新主机mesos marathonmesos …

微信小程序查看接口信息(抓包)

本文仅供交流学习使用 主要参考: https://cloud.tencent.com/developer/article/1833591 https://www.cnblogs.com/x1you/p/12033839.html 由于参考文章在baidu权重不高(google才查到的), 所以自己重新记录一篇, 方便他人, 也防止参考文章丢失. 背景 需要知道微信小程序的接口…

8、Broker进一步了解

1、Broker消息分发服务以及构建ConsumeQueue和IndexFile与消息清除 前面分析如何进行刷盘&#xff0c;本章分析Broker的消息分发以及构建ConsumerQueue和IndexFile&#xff0c;两者构建是为了能够提高效率&#xff0c;减少消息查找时间以及减少网络带宽与存储空间。 ConsumeQ…

线程与线程池

单核cpu与多核cpu&#xff1a; 线程的并发和并行问题 多线程的创建&#xff1a; 多线程程序创建&#xff1a;java.lang.Thread(实现了Runnable接口) // 1定义一个类实现Runnable接口&#xff0c;重写run方法&#xff08;run方法中设置线程任务&#xff09;…

W5500实现以太网通信

实现原理 嵌入式程序跑在STM32微控制器&#xff0c;通过片上SPI控制器与W5500进行通信&#xff0c;配置所需网络参数并与远端服务器建立链接&#xff08;TCP客户端&#xff09;之后发送接收数据&#xff1b;又或者是建立服务器&#xff08;TCP服务器&#xff09;等待建立链接之…

mac电池最大充电限制工具 AlDente Pro中文 for Mac

Pro 版特有功能 热保护&#xff1a;在电池温度较高时为电池充电会导致电池老化更快。启用热保护后&#xff0c;当电池温度过高时&#xff0c;充电将自动停止。 航行模式&#xff1a;通常情况下&#xff0c;即使激活了最大电池充电&#xff0c;您的 MacBooks 电池也会始终稍微充…

记一次校园双选会面试问到的题

创建对象方式 线程安全和那些锁 stringbuff build区别 反射原理 集合底层 存储引擎myisam和innodb B树&#xff0c;慢查询&#xff0c;sql优化 数据库三大范式 左右内连接分别的效果 谈谈boot和spring&#xff0c;常用注解 ioc aop redis里的锁&#xff0c;缓存击穿穿透血崩&am…

7.上传project到服务器及拉取服务器project到本地、更新代码冲突解决

1.上传project到SVN服务器 1.在eclipse中&#xff0c;从show view里调出SVN资源库视图 2.在SVN资源库窗口的空白位置右键选择新建资源库位置 3.填好服务器的地址 4.资源库导入成功,SVN资源库视图下出现导入的资源库 5.新建project 6.写好project的初始版本 7.右键project --&…

Java面试题(每天10题)-------连载(43)

目录 Spring篇 1、请举例说明Qualifier注解 2、构造方法注入和设值注入有什么区别&#xff1f; 3、Spring框架中有哪些不同类型的事件&#xff1f; 4、FileSystemResource和ClassPathResource有什么区别&#xff1f; 5、Spring框架中都用到了哪些设计模式&#xff1f; 6…

激光雷达生成的图像检测关键点用来辅助里程计的方案

文章&#xff1a;LiDAR-Generated Images Derived Keypoints Assisted Point Cloud Registration Scheme in Odometry Estimation 作者&#xff1a;Haizhou Zhang , Xianjia Yu, Sier Ha , Tomi Westerlund 编辑&#xff1a;点云PCL 欢迎各位加入知识星球&#xff0c;获取PDF…

数据结构与算法编程题41

线性表中各结点的检索概率不等时&#xff0c;可用如下策略提高顺序检索的效率&#xff1a; 若找到指定的结点&#xff0c;则将该结点和其前驱结点&#xff08;若存在&#xff09;交换&#xff0c;使得经常被检索 的结点尽量位于表的前端。试设计在顺序结构的线性表上实现上述策…

使用Vue写一个日期选择器

在 Vue 中实现日期选择器的方法有很多&#xff0c;下面提供一个简单的实现方法。 首先&#xff0c;在需要使用日期选择器的组件中引用 Vue 和 date-fns 库&#xff0c;date-fns 库是一个轻量级的 JavaScript 时间日期工具库&#xff0c;可以方便地处理日期的格式化和计算。 &…

DCGAN生成网络模型

DCGAN&#xff08;Deep Convolutional Generative Adversarial Network&#xff09;是一种生成对抗网络&#xff08;GAN&#xff09;的变体&#xff0c;专门设计用于生成图像。它结合了卷积神经网络&#xff08;CNN&#xff09;和生成对抗网络的概念&#xff0c;旨在生成具有高…

Java的接口和抽象类

在Java编程中&#xff0c;接口和抽象类是两个重要的概念。它们都用于实现面向对象编程中的抽象和封装&#xff0c;但在使用方式和功能上有所不同。本文将详细介绍Java中接口和抽象类的概念、用法和示例代码&#xff0c;帮助读者更好地理解和应用它们。 一、接口&#xff08;In…

C语言/C++实战项目雷霆飞机(代码改进)

上代码 #include <stdio.h> #include <easyx.h> #include <time.h> #include <Mmsystem.h> #pragma comment(lib,"winmm.lib") #define WIDTH 600 #define HEIGHT 850 #define bullet_max 5000 //我方飞机子弹最大量 #define enem…

mysql基础之DQL基本单表查询

学习DQL之前先知道sql语句的执行顺序 from->join->on->where->group by->count(字段)->having->select->distinct->order by->limit null无法和任何值进行比较&#xff08;不相等&#xff09;&#xff0c;包括null和null也不相等 1.DQL简单查询…

免费好用的5个AI写作工具,如何更好的使用AI写作工具

人工智能&#xff08;AI&#xff09;作为当今科技领域的热门话题&#xff0c;正在以惊人的速度改变我们生活的方方面面。从智能助手到自动驾驶汽车&#xff0c;AI的应用已经渗透到我们日常的方方面面。 1. 什么是AI人工智能&#xff1f; 什么是AI人工智能&#xff1f;简而言之…

CCF编程能力等级认证GESP—C++1级—20230318

CCF编程能力等级认证GESP—C1级—20230318 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09;判断题&#xff08;每题 2 分&#xff0c;共 20 分&#xff09;编程题 (每题 25 分&#xff0c;共 50 分)每月天数长方形面积 答案及解析单选题判断题编程题1编程题2 单选…

会声会影2024软件还包含了视频教学以及模板素材

会声会影2024中文版是一款加拿大公司Corel发布的视频编软件。会声会影2024官方版支持视频合并、剪辑、屏幕录制、光盘制作、添加特效、字幕和配音等功能&#xff0c;用户可以快速上手。会声会影2024软件还包含了视频教学以及模板素材&#xff0c;让用户剪辑视频更加的轻松。 会…