求最大公约数。提交 hcf函数即可。

求最大公约数。提交 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;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注