求最大公约数。提交 hcf函数即可。
时间: 1ms 内存:128M
描述:
#include <iostream>
using namespace std;int hcf(int m,int n);
int main()
{int x,y,a;
cin>>x>>y;
a=hcf(x,y);
cout<<a;
return 0;}
输入:
输出:
示例输入:
21 9
示例输出:
3
提示:
参考答案(内存最优[920]):
int main()
{
int a,b,c,n,m;
scanf("%d\n%d",&n,&m);
if(n<m)
{
c=n;
n=m;
m=c;
}
a=n*m;
while(m!=0)
{
b=n%m;
n=m;
m=b;
}
printf("%d\n",n);
}
参考答案(时间最优[0]):
#include<iostream>
using namespace std;
void paidui(int a[],int i,int m)//排列成“堆”的形式
{
int k,t;
t=a[i]; //保存处理元素
k=2*i+1;
while (k<m) //处理父亲元素
{ if ((k<m-1)&&(a[k]<a[k+1])) //取较大的孩子节点
k++;
if (t<a[k])
{
a[i]=a[k];
i=k;
k=2*i+1;
}
else break;
}
a[i]=t;
}
void duipai(int a[], int n) //堆排序函数
{
int i,k;
for (i=n/2-1;i>=0;i--)
paidui(a,i,n);//处理后,a[i]是这个数组后半部分的最大值
for (i=n-1; i>=1; i--)
{
k=a[0]; //把剩下元素中最大的那个放到结尾,下一次只要排剩下的数就可以
a[0]=a[i];
a[i]=k;
paidui(a,0,i);
}}
int main()
{
int a[100],i,n;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
duipai(a,n);
for(i=0;i<n;i++)
cout<<a[i]<<" ";
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。