博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1305 Fermat vs. Pythagoras【勾股数】
阅读量:5970 次
发布时间:2019-06-19

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

题意: 让你找出1 到 n 之间所有可以构成 x^2 +y^2 =z^2 的个数,且 x,y,z互质。

分析: 数论中有本原勾股数组的公式

x=2*s*t,y=s*s-t*t,z=s*s+t*t;
其中s>t>=1而且gcd(s,t)==1

View Code
#include
#include
#include
int gcd(int y,int x){ return x==0?y:gcd(x,y%x);}int v[1000001];int main(){ int n,x,y,z,t1,t2,i,j,k; while(scanf("%d",&n)!=EOF) { t1=t2=0; for(i=0;i<=n;i++) v[i]=0; for(i=1;i*i<=n/2;i++) for(j=i;j*j<=n;j++) { x=2*i*j; y=j*j-i*i; z=i*i+j*j; if(z>n)break; if(gcd(x,y)==1) { t1++; for(k=1;k*z<=n;k++) v[k*x]=v[k*y]=v[k*z]=1; } } for(i=1;i<=n;i++) if(!v[i]) t2++; printf("%d %d\n",t1,t2); } return 0;}

 

 

转载于:https://www.cnblogs.com/dream-wind/archive/2012/05/03/2481243.html

你可能感兴趣的文章
HDU1848 Fibonacci again and again
查看>>
HTML思维导图
查看>>
git改密码出现授权问题
查看>>
ORA-02266: 表中的唯一/主键被启用的外键引用
查看>>
Django的POST请求时因为开启防止csrf,报403错误,及四种解决方法
查看>>
day-6 and day-7:面向对象
查看>>
CSU Double Shortest Paths 湖南省第十届省赛
查看>>
webgl像机世界
查看>>
php正则怎么使用(最全最细致)
查看>>
javascript数学运算符
查看>>
LC.155. Min Stack(非优化,两个stack 同步 + -)
查看>>
交互设计[3]--点石成金
查看>>
SCCM TP4部署Office2013
查看>>
Android创建启动画面
查看>>
Linux中date命令的各种实用方法--转载
查看>>
mysqld -install命令时出现install/remove of the service denied错误的原因和解决办法
查看>>
苹果企业版帐号申请记录
查看>>
C++ Error: error LNK2019: unresolved external symbol
查看>>
Bitmap 和Drawable 的区别
查看>>
Java操作mongoDB2.6的常见API使用方法
查看>>