我是靠谱客的博主 直率饼干,最近开发中收集的这篇文章主要介绍HDU1722 Cake HDU2504 又见DCG HDU1108最小公倍数.,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这些题都是与最大公约数也就是最大公因数有关系的。对于求最大公约数的函数有很多这里推荐一个代码数目少的代码。

int gcd(int a, int b)
{
    return b ? gcd(b,gcd( a % b )) : a
}

一次生日Party可能有p人或者q人参加,现准备有一个大蛋糕.问最少要将蛋糕切成多少块(每块大小不一定相等),才能使p人或者q人出席的任何一种情况,都能平均将蛋糕分食. 

Input

每行有两个数p和q. 

Output

输出最少要将蛋糕切成多少块. 

Sample Input

2 3

Sample Output

4

Hint

将蛋糕切成大小分别为1/3,1/3,1/6,1/6的四块即满足要求.
当2个人来时,每人可以吃1/3+1/6=1/2 , 1/2块。
当3个人来时,每人可以吃1/6+1/6=1/3 , 1/3, 1/3块。

对于这一题的思路大致为,一个蛋糕可以先分割成p块然后再将其合成完整的一个蛋糕,然后再次分割成q块,总计是p+q块,但是有重叠的蛋糕 重叠的蛋糕的块数就是p和q的最大公约数比如题中的2 3的最大公约数就是1 所以答案为4

先套模板 然后编写函数。

#include<bits/stdc++.h> 
using namespace std;
int gcd(int a,int b)
 {
    return b ? gcd (b, a % b) : a;
} 
int main()
{
	int p,q,k;
	while(scanf("%d%d",&p,&q)!=EOF)
	{
	k=gcd(p,q);
	printf("%dn",p+q-k);
}
}

又见GCD

有三个正整数a,b,c(0<a,b,c<10^6),其中c不等于b。若a和c的最大公约数为b,现已知a和b,求满足条件的最小的c。 

Input

第一行输入一个n,表示有n组测试数据,接下来的n行,每行输入两个正整数a,b。 

Output

输出对应的c,每组测试数据占一行。 

Sample Input

2
6 2
12 4

Sample Output

4
8

这个题进行暴力解法 要首先明白c是b的倍数然后c不等于0且c不等于b 因此c应该从2*b开始每次加b;进行循环一直算出来对应的最大公约数等于b然后返回这个值。

#include<bits/stdc++.h> 
using namespace std;
int gcd(int a, int b)
 {
 	return b ? gcd (b, a % b) : a;
}
int main()
{
	int n,a,b,c;
	scanf("%d",&n);
	while(n--)
	{
		scanf("%d%d",&a,&b);
		for(c=b+b;c<=a;c+=b)
		{
			if(gcd(a,c)==b)
			{
				break;
			}
		}
		printf("%dn",c);
	}
}

最小公倍数

给定两个正整数,计算这两个数的最小公倍数。

Input

输入包含多组测试数据,每组只有一行,包括两个不大于1000的正整数.

Output

对于每个测试用例,给出这两个数的最小公倍数,每个实例输出一行。 

Sample Input

10 14

Sample Output

70

这一题依旧是与最大公约数相关联的,有一个公式是

lcm(a,b) *gcd(a,b)= |a·b| 

;两个数的积等于最大公约数乘以最小公倍数。

因此还是先模板求出最大公约数

​#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int zhanzhuan(int a,int b)
{
	return b==0? a:zhanzhuan(b,a%b);
}
int main()
{
	int a,b,k;
	while(scanf("%d%d",&a,&b)!=EOF)
	{
		k=zhanzhuan(a,b);
		printf("%dn",a*b/k);
	}


​

这三道题大致的思路都差不多  全部都是跟最大公约数有相关联的因此要记住最大用约数的算法。

 

 

 

最后

以上就是直率饼干为你收集整理的HDU1722 Cake HDU2504 又见DCG HDU1108最小公倍数.的全部内容,希望文章能够帮你解决HDU1722 Cake HDU2504 又见DCG HDU1108最小公倍数.所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(74)

评论列表共有 0 条评论

立即
投稿
返回
顶部