主题:第二界编程比赛试题
黄金风格
[专家分:4050] 发布于 2005-10-20 13:06:00
输入两个整数(要求100以内的自然数),若这两个整数之间存在自然数对,则将其中所有的自然数对输出,否则输出不存在的提示.所谓的自然数对是指两个自然数的和与差都是平方数.例如:17-8=9,17+8=25,那么17与8就是自然数对!
例如:输入:2 11
输出: 4 5
6 10
请大家按要求做题,一定要严密,贴上最优的代码!
由于本的能力有限,我想采取大家投票的方式取下届冠军.
请大家投自己最中意的程序编者!!
回复列表 (共72个回复)
11 楼
lt1234 [专家分:470] 发布于 2005-10-20 13:47:00
#include<stdio.h>
#include<math.h>
main()
{ int m,n,k,t,a,j,i;
printf(" Please enter two num(1~100):");
while(1)
{
scanf("%d%d",&m,&n);
if((m>1&&m<100)&&(n>1&&n<100)) break;
else printf(" out of rang(1~20)please retyp:");
}
if(m>n)
{ t=m;m=n;n=t;}
for(i=m;i<=n;i++)
for(j=i+1;j<=n;j++)
{ k=sqrt(i+j);
a=sqrt(j-i);
if(k*k==(i+j)&&a*a==(j-i))
printf("\n%d %d\n",i,j);
else printf(" zhi liang ge shu zhi jian mei you zi ran shu duei!");
}
}
我是初学者,可能这个程序写得太复杂了点~~~~希望大家能够帮我改正!!
12 楼
shchenjian [专家分:910] 发布于 2005-10-20 13:50:00
说说我的算法吧
没时间写了
pow求次方的
a-b=pow(n,2);
a-b=pow(m,2);
又
x<a<y;
x<b<y;
则
x<(pow(m,2)+pow(n,2))/2<y
x<(pow(m,2)-pow(n,2))/2<y
然后
2x<pow(m,2)<2y;
x-y<pow(n,2)<y-x;
遍历这两个范围中的能开方的数就可以了。
13 楼
cole [专家分:960] 发布于 2005-10-20 13:59:00
#include<stdio.h>
#include<math.h>
main()
{int i,j,k,t;
k=t=0;
scanf("%d%d",&i,&j);
if((i>=0&&i<=100)&&(j>=0&&j<=100))
{k=j-i;t=j+i;
k=abs(k);
if(k==sqrt(k)^2&&t==sqrt(t)^2)
printf("%d %d\n",i,j);}
else
printf("the error!");
}
14 楼
cole [专家分:960] 发布于 2005-10-20 14:08:00
#include<stdio.h>
#include<math.h>
{int i,j,k,t;
k=t=0;
scanf("%d%d",&i,&j);
if((i>=0&&i<=100)&&(j>=0&&j<=100))
{k=j-i;t=k+i;
k=abs(k);
if(k==sqrt(k)^2&&t==sqrt(t)^2)
printf("%d %d\n",i,j);}
else
printf("the error!");
}
15 楼
cole [专家分:960] 发布于 2005-10-20 14:16:00
#include<stdio.h>
#include<math.h>
main()
{int i,j,k,t;
k=t=0;
scanf("%d%d",&i,&j);
if((i>=0&&i<=100)&&(j>=0&&j<=100))
{k=j-i;t=j+i;
k=abs(k);
if(k==sqrt(k)^2&&t==sqrt(t)^2)
printf("%d %d\n",i,j);
}
else
printf("the error!");
}
16 楼
cole [专家分:960] 发布于 2005-10-20 14:17:00
#include<stdio.h>
#include<math.h>
main()
{int i,j,k,t;
k=t=0;
scanf("%d%d",&i,&j);
if((i>=0&&i<=100)&&(j>=0&&j<=100))
{k=j-i;t=j+i;
k=abs(k);
if(k==sqrt(k)^2&&t==sqrt(t)^2)
printf("%d %d\n",i,j);
}
else
printf("the error!");
}
17 楼
cole [专家分:960] 发布于 2005-10-20 14:18:00
#include<stdio.h>
#include<math.h>
main()
{int i,j,k,t;
k=t=0;
scanf("%d%d",&i,&j);
if((i>=0&&i<=100)&&(j>=0&&j<=100))
{k=j-i;t=j+i;
k=abs(k);
if(k==sqrt(k)^2&&t==sqrt(t)^2)
printf("%d %d\n",i,j);
}
else
printf("the error!");
}
18 楼
cole [专家分:960] 发布于 2005-10-20 14:19:00
#include<stdio.h>
#include<math.h>
main()
{int i,j,k,t;
k=t=0;
scanf("%d%d",&i,&j);
if((i>=0&&i<=100)&&(j>=0&&j<=100))
{k=j-i;t=j+i;
k=abs(k);
if(k==sqrt(k)^2&&t==sqrt(t)^2)
printf("%d %d\n",i,j);
}
else
printf("the error!");
}
19 楼
pebble [专家分:410] 发布于 2005-10-20 14:22:00
晕,什么时候出的题啊,我还不知道呢??
你们都做出来啊!!
我好慢我好慢!!
20 楼
cole [专家分:960] 发布于 2005-10-20 14:26:00
#include<stdio.h>
#include<math.h>
main()
{int i,j,k,t;
k=t=0;
scanf("%d%d",&i,&j);
if((i>=0&&i<=100)&&(j>=0&&j<=100))
{k=j-i;t=j+i;
k=abs(k);
if(k==sqrt(k)^2&&t==sqrt(t)^2)
printf("%d %d\n",i,j);
}
else
printf("the error!");
}
我来回复