博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Contest20180418]数学竞赛
阅读量:5964 次
发布时间:2019-06-19

本文共 1084 字,大约阅读时间需要 3 分钟。

题意:初始时$x=0$(长度),当$x$为长度时,你可以把$x$变成$\sin^{-1}x,\cos^{-1}x,\tan^{-1}x$之一($x$变为角度),若$x$为角度,你可以把$x$变成$\sin x,\cos x,\tan x$之一($x$变为长度),你需要把$x$变成$\dfrac pq$(长度),输出方案

首先若$p=0$,什么都不用做

若$p=q$,直接$\cos\left(\sin^{-1}0\right)$即可

题目给了一档部分分:可以使用$+1$和取倒数操作,这个很好办,如果要获取$\dfrac pq$,如果$p\geq q$,那么先获取$\dfrac{p-q}q$再$+1$,否则先获取$\dfrac qp$再取倒数,整个过程可以用递归实现

如果只给用三角函数,我们需要用三角函数构造一些基础的操作

$x\rightarrow\dfrac1x$:$\tan\left(\sin^{-1}\left(\cos\left(\tan^{-1}x\right)\right)\right)=\dfrac1x$

$x\rightarrow\sqrt{x^2+1}$:$\dfrac1{\cos\left(\tan^{-1}x\right)}=\sqrt{x^2+1}$

$+1$很难构造,但是注意到$x\rightarrow\sqrt{x^2+1}$意味着$\sqrt x\rightarrow\sqrt{x+1}$,所以我们只需要求出$\sqrt{\left(\dfrac pq\right)^2}$就可以了

具体的:把部分分的递归函数中的$+1$换成$x\rightarrow\sqrt{x^2+1}$并对$\dfrac{p^2}{q^2}$调用函数即可

#include
char s[20];void inv(){ printf("6145");}void sq1(){ printf("63"); inv();}void gao(int a,int b){ if(a==b){ printf("23"); return; } if(a>b){ gao(a-b,b); sq1(); }else{ gao(b,a); inv(); }}int main(){ int a,b; scanf("%s%d/%d",s,&a,&b); if(a==0)return 0; gao(a*a,b*b);}

转载于:https://www.cnblogs.com/jefflyy/p/8885934.html

你可能感兴趣的文章
数值积分中的辛普森方法及其误差估计
查看>>
Web service (一) 原理和项目开发实战
查看>>
跑带宽度多少合适_跑步机选购跑带要多宽,你的身体早就告诉你了
查看>>
深入理解Java的接口和抽象类
查看>>
Javascript异步数据的同步处理方法
查看>>
iis6 zencart1.39 伪静态规则
查看>>
SQL Server代理(3/12):代理警报和操作员
查看>>
Linux备份ifcfg-eth0文件导致的网络故障问题
查看>>
2018年尾总结——稳中成长
查看>>
JFreeChart开发_用JFreeChart增强JSP报表的用户体验
查看>>
度量时间差
查看>>
通过jsp请求Servlet来操作HBASE
查看>>
Shell编程基础
查看>>
Shell之Sed常用用法
查看>>
3.1
查看>>
校验表单如何摆脱 if else ?
查看>>
<气场>读书笔记
查看>>
Centos下基于Hadoop安装Spark(分布式)
查看>>
3D地图的定时高亮和点击事件(基于echarts)
查看>>
mysql开启binlog
查看>>