« | Mar.2021 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | |
|
公告 |
本站技术贴除标明为“原创”的之外,其余均为网上转载,文中我会尽量保留原作者姓名,若有侵权请与我联系,我将第一时间做出修改。谢谢!
——既瑜 |
统计 |
blog名称:★既瑜★ 日志总数:183 评论数量:636 留言数量:-25 访问次数:1369601 建立时间:2005年3月12日 |
OICQ:215768265
njucs2001@hotmail.com
erichoo1982@gmail.com |
|
W3CHINA Blog首页 管理页面 写新日志 退出
[【疑难问题】]一道算法题 |
算pi,要求在尽可能短的时间内输出pi值,精确到小数点后面500位!
#include <stdio.h> #include <iostream.h> int a=10000, b, c=2800, d, e, f[2801], g; main() { for(;b-c;) f[b++]=a/5; for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a) for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b); return 0; }
|
阅读全文(4244) | 回复(4) | 编辑 | 精华 |
回复:一道算法题 |
一个牛人对外星人程序的破解: 记得谭浩强的书中就有求pi的公式………… 4/1pi=1+1/3-1/5+1/7-1/9………………(不知道有没错哦,很久不看了) 这样的公式求pi,你能算到几位,而且时间花得很多,代码也很长……(数位都不够) 在Obfuscated C Contest佳作选录中有一代码…………(被后人称为外星人程序,因为作者没有留下姓名) 只用4行代码(包括声明变量,函数),可轻松算到pi的800位………… 实在令人叹服,我想,不关是我,就连看这篇文章的各位,一辈子都不可能写出这样的文章…………(不是我吹牛……) 浅浅分析一下,这篇文章的数学技巧不高,但是编程技巧实在是……………… 下面列出此外星人程序………………………………………… long a=10000,b,c=2800,d,e,f[2801],g; main(){for(;b-c;)f[b++]=a/5; for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a) for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);} 有人分析过,展开得到的程序是………… long b,c=2800,d,e,f[2801],g; int main(int argc,char* argv[]) { /*for(;b-c;)f[b++]=10000/5; for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/10000),e=d%10000) for(b=c;d+=f[b]*10000,f[b]=d%--g,d/=g--,--b;d*=b);*/ for(b=0;b<c;b++) f[b] = 2; e=0; while(c > 0) { d=0; for(b=c;b>0;b--) { d*=b; d+=f[b]*10; f[b]=d%(b*2-1); d/=(b*2-1); } c-=1; printf("%d",(e+d/10)%10); e=d%10; } return 0; } 这pi代码的计算数学公式是…… f(1)=1 f(n+1)=f(n)*n/(2*n+1) PI/2=f(1)+f(2)+f(3)+.....+f(n) n->无穷大。 或: PI/2 = 1 + 1/3 + (1*2)/(3*5) + (1*2*3)/(3*5*7) + (1*2*3*4)/(3*5*7*9)+... …………………………………………………………………… 有兴趣的朋友可以自己试试,不过可以告诉大家,在不同的编译条件下得到的结果可能不同,i++与++i的诧异……………… 下面有个结果的例子: 31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185 ……
|
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除 |
» 1 »
|