根号

对m开n次根号的问题

女生的网名这么多〃 提交于 2020-03-10 08:34:37
遇到一个问题,输入为m,n,对m开n次根号,不允许使用任何库函数,结果保留小数点后12位。 // 开根号.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // # include <iostream> # include <stdio.h> # define eps 10E-13 int main ( ) { double m , n , result , mid , temp , right , left ; ( void ) scanf ( "%lf %lf" , & m , & n ) ; //当n为1的时候单独判断 if ( n == 1 ) { printf ( "%.12lf" , m ) ; return 0 ; } if ( m == 1 ) { printf ( "%.12lf" , m ) ; return 0 ; } //当n不为1的时候 left = 0 ; right = m ; mid = left + ( right - left ) / 2 ; temp = 1.0 ; while ( temp - m >= eps || temp - m <= - eps ) { temp = 1.0 ; for ( int i = 0 ; i < n ; i ++ ) { temp = temp * mid ; } if ( temp

问问算法后面的为什么

[亡魂溺海] 提交于 2020-03-09 08:15:31
题目:写一个函数,判断一个数是否是素数 素数是指除了能被1和它本身整数外,不能被其他任何整数整除的数 我们常用的方法就是 :假设输入为k,判断k是否能够被2到根号k之间的数整除,如果能够,则说明不是素数,反之,则是素数 那为什么要 根据 k是否能够被2到根号k之间的数整除 来做判断,这背后的道理逻辑在哪里? 这是我接触C语言的第四年,前面三年我一直都没有弄清楚过,最近的一点感悟就是 多问问自己为什么 比如说 36 是素数 开方等于6 而 36=3 12 36=4 9 36=6*6 36如果写成两个数相乘的形式,一定有一个是<=根号36,有一个是>=根号36,所以只要判断从2-根号36就好了,根号36之后的数一直到36-1,都是对前面乘法的重复 此外,反证法: 设k=a b; 如果存在 a,b>根号k, 则a b>根号k*根号k=k,与已知矛盾, 所以 如果k有除了1和本身以外的其他因子,那一定也在1到根号k里面存在 C代码: # include <stdio.h> # include <math.h> int sushu ( int n ) ; void main ( ) { int n ; scanf ( "%d" , & n ) ; sushu ( n ) ; } int sushu ( int n ) { int i ; for ( i = 2 ; i <= sqrt ( n

递归专题---[2]开根号

一曲冷凌霜 提交于 2020-02-11 20:59:44
0.简介 开根号,在C++中sqrt就可以解决,实际怎么写呢? 1.推导开根号计算方法 这里采用连分数逼近方法,例如对2开根号可以做如下操作。 公式 然后发现这个式子是可以递归的,就写出如下代码。 double mySqrt(double x) { static int t = 0; return t++==10 ? 0 : 1+((x-1)/(mySqrt(x)+1)); } int main() { cout << mySqrt(2) << endl; return 0; } 来源: CSDN 作者: ARTELE 链接: https://blog.csdn.net/ARTELE/article/details/104267570

根号算法

只谈情不闲聊 提交于 2020-02-08 21:18:34
看的视频课,晕晕乎乎的看了不知道多久,快进&回放反复横跳。 有一些非常奇妙的收获,记录一下。 好乱啊。。。 分块:可以理解为深度为3,儿子数为$O(\sqrt{n})$的分治树。 普通莫队的比较优秀的块长是$\frac{n}{\sqrt{\frac{2m}{3}}}$ 普通莫队可以奇偶性优化,即左端点块编号为奇数时右端点升序,偶数时降序。 回滚莫队解决不修改莫队问题。 带修莫对就是在普通的双参莫队上再加一维(前提是可撤销),时间复杂度是$O(n^{\frac{5}{3}})$的 树上莫队可以采用一种特殊的遍历序:进入时加入,回溯时加入,介于$dfs$序和$Euler$序之间的一种。 然后出现次数为奇数的有贡献,出现次数为偶数的没有贡献,再额外考虑一下$lca$的贡献即可。 然后就排在序列上可以乱弄了。 二次离线:我们对问题离线之后,问题产生的子问题不能合理解决,于是可以把子问题的询问再次离线。 类似分块套莫队之类的。 cache:内存大时运行较慢。这对根号算法的影响很大。 块状链表:支持$O(1)$查询第k大,O(\sqrt{n})插入或删除。将数列分为若干段然后维护多个队列,保证队列长度一定。 根号平衡:当两种操作数量级不同时,可以给次数较少的操作分配$O(\sqrt{n})$的复杂度以此为代价让操作次数多的达到$O(1)$ 树上分块:(应对强制在线)。随机出根号个点

ybt1200 分解因数

社会主义新天地 提交于 2020-01-25 23:36:08
ybt1200 分解因数 【题目描述】 给出一个正整数a,要求分解成若干个正整数的乘积,即a=a1×a2×a3×...×an,并且1<a1≤a2≤a3≤...≤an,问这样的分解的种数有多少。注意到a=a也是一种分解。 【输入】 第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a(1<a<32768)。 【输出】 n行,每行输出对应一个输入。输出应是一个正整数,指明满足要求的分解的种数。 【输入样例】 2 2 20 【输出样例】 1 4 【题解】 本题只要输出方案数,不用考虑组合方式。为了防止重复,要保证因数的顺序升序排列。 因为每一个数n在分解时,都可以分成一个小于等于根号n的因数a,和一个大于等于根号n的因数b,而且只要确定一个a,另一个b也就确定了:b=n/a。所以只要从小到大枚举a作为本方案内n的最小因数,分解b并保证b的分解方案中b的最小因数大于等于a,这样就保证了n的因数方案中各因数升序排列。 另外,由于sqrt()函数在开方后会出现浮点数,所以就可以转化一下判断a小于等于根号n的语句,易证: \[ a<=\sqrt n等价于a<=n/a \] 递归边界就是/已经将/当前的b/分解为/不能/在满足条件(b的最小因子大于等于a)的情况下/继续分解。(强行断句)(累心) 根据以上算法,写出递归函数: void f(int a,int b) {/

【转载整理】移动端页面按手机屏幕分辨率自动缩放的js

我的未来我决定 提交于 2019-12-07 23:40:08
<script> var phoneWidth = parseInt(window.screen.width); var phoneHeight = parseInt(window.screen.height); var phoneScale = phoneWidth/750;//除以的值按手机的物理分辨率 var ua = navigator.userAgent; if (/Android (\d+\.\d+)/.test(ua)) { var version = parseFloat(RegExp.$1); // andriod 2.3 if (version > 2.3) { document.write('<meta name="viewport" content="width=device-width,initial-scale='+phoneScale+',minimum-scale='+phoneScale+',maximum-scale='+phoneScale+',user-scalable=no">'); } else { document.write('<meta name="viewport" content="width=device-width,user-scalable=no">'); } } else { document.write('<meta

2019.10.12题解

巧了我就是萌 提交于 2019-12-01 06:40:12
A. 木板 标签: 素因数的根号筛法 题解: 由相似三角形可得: $ ans=8*\sum_{i=1}^{n-1}[i*i(mod)n==0] $ 根号筛出质因子即可 B. 打扫卫生 标签: Dp+链表 正解: 暴力可A的一道题,但是正解其实并不难想 最暴力的Dp式子:$ f[i]=min{f[j]+cnt(j+1,i)^2} $ 假如j从i-1枚举,那么我们发现当cnt数到了sqrt(f[i])以上后对答案一定没有贡献 考虑用一个链表维护每个数截至到i出现的最后位置以保证复杂度$ O(nsqrt(n)) $ 来源: https://www.cnblogs.com/AthosD/p/11664731.html

结对项目总结

对着背影说爱祢 提交于 2019-11-30 15:16:23
在做个人项目时,只考虑了将题目完整、无歧义、无赘述的显示出来。未考虑如何进行计算,所以计算正确答案时遇到了很多问题。不过好在我在生成题目时,并没有像一些同学一样,以过程为导向,随机括号的位置。这样可能导致赘述,而且需要判断括号是否交叉,还导致难以计算的问题。我使用的是以结果为导向,随机运算符的优先级,根据优先级先添加括号,然后判断括号是否赘述,然后判断是否去除括号。这样避免了括号的赘述问题,也方便表达式的计算。 在这次结对编程中,我负责题目的计算和生成错误答案。在我动手做之前,java有计算表达式的函数,这让使用c++的我忍不住直喊“ java是世界上最好的语言! ”。不过当我看到他们计算出来的答案都是小数,不显示根号的时候,我觉得我可以做一个结果带根号的项目。因为像√55、√78、sin69这类的表达式根本就不是一个初高中生能计算的。然后我提取这些表达式最基本的单元:单项式。这个单项式包含以下属性:分子,分母,根号,根号下的数。它可以表示整数,分数,根号数,满足我的要求。因为这些复杂的运算,最后都化为单项式和单项式运算,所以我需要重载单项式的+-*/操作,最后根据需要调用+-*/即可。 说实话,这次的结对编程于我而言,作用不大。因为我们没有进行过需求获取、分析,也没有记录文档,而且还是按照之前的编程逻辑,面向过程编程,边写边分析,最后发现方向错了,还得重构代码。我在整个编程中

leetcode——633.平方数之和

依然范特西╮ 提交于 2019-11-30 12:14:00
经过40多分钟才写出来,应该还是思路的问题。 但是通过了我就很开心 1 class Solution: 2 def judgeSquareSum(self, c: int) -> bool: 3 if c==0: 4 return True 5 6 i=int((c//2)**0.5) 7 j=int((c//2)**0.5)+1 8 while i<int(c**0.5)+1 and j>=0: 9 if i**2+j**2==c: 10 return True 11 elif i**2+j**2>c: 12 j=j-1 13 elif i**2+j**2<c: 14 i=i+1 15 else: 16 return False 执行用时 :940 ms, 在所有 Python3 提交中击败了5.23%的用户 内存消耗 :13.8 MB, 在所有 Python3 提交中击败了8.44%的用户 举个例子: 假如c=78 因为c大于8**2,小于9**2, 所以遍历的时候 i 的大小最大也就是8。因为是两个数的平方和,所以最公平的就是i**2和j**2各占c/2。 所以i的起始值就是从根号c/2开始,到根号c结束; j从根号2/c+1开始,依次减小,到0结束。 遍历过程以及判断条件如程序中所示 ——2019.9.25 来源: https://www.cnblogs.com

数据结构(二)-求<=N

我们两清 提交于 2019-11-29 14:54:57
Q:求解小于或等于整数N的最大素数 A:穷举法枚举从N到√N,逐个用2到√N的数去整除,若能除尽则不是素数。 tips:如果一个整数N不是素数,它一定可以分解为比它小的两个整数的乘积,其中一个乘数小于或等于根号n,另一个大于或等于根号n。 怎么证明最大素数一定在根号n到n之间出现? 来源: https://www.cnblogs.com/SUMaywlx/p/11520069.html