ACM练习

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

最小公倍数

Problem Description

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

Input

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

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

10 14

Sample Output

70

Code:

#include

using namespace std;

int main(){

int a,b,t,m;

while(cin>>a>>b){

if(a

t=a;

a=b;

b=t;

}

m=a*b;

while(b!=0){

t=a%b;

a=b;

b=t;

}

t=m/a;

cout<

}

return 0;

}

Cake

Problem Description

一次生日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-最大公约数

程序代码:

#include

using namespace std;

int gcd(int a, int b){

while(a!=b){

if(a>b)

a=a-b;

else

b=b-a;

}

return a;

}

int main(){

int p,q,t;

while(cin>>p>>q){

t=gcd(p,q);

cout<

return 0;

}

又见GCD

Problem Description

有三个正整数a,b,c(0

Input

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

Output

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

Sample Input

2

6 2

12 4

Sample Output

4

8

程序代码:

方法1:最简单的方法,一个一个的试。

#include

using namespace std;

int gcd(int m,int n){

while(m!=n){

if(m>n)

m=m-n;

else

n=n-m;

}

return m;

}

int main(){

int a,b,i,n;

cin>>n;

while(n--){

cin>>a>>b;

for(i=b+1;i<1000000;i++){

if(gcd(a,i)==b){

cout<

break;

}

}

}

return 0;

}

方法2:分析:已知gcd(a,c)=b,和a,b,求最小的c,其中c!=b。原以为既然c!=b,那么最小的当然是2b啦,可是提交了发先WA。回头分析发现,不是这么简单,原因在于a 可能是c的倍数,比如若a=6b,那么c=2b,3b,4b都不是答案,因为这时候gcd(a,c)=2b,3b,4b。既然如此,只好一个一个试了,从2b开始,一次增加b,直到gcd(a,c)=b。

#include

using namespace std;

int gcd(int m,int n){

while(m!=n){

if(m>n)

m=m-n;

else

n=n-m;

}

return m;

}

int main(){

int a,b,c,n;

cin>>n;

while(n--){

cin>>a>>b;

c=2*b;

while(gcd(a,c)!=b)

c+=b;

cout<

}

return 0;

}

How many prime numbers

Problem Description

Give you a lot of positive integers, just to find out how many prime numbers there are.

Input

T here are a lot of cases. In each case, there is an integer N representing the number of integers to find. Each integer won’t exc eed 32-bit signed integer, and each of them won’t be less than 2.

Output

F or each case, print the number of prime numbers you have found out

Sample Input

3

2 3 4

Sample Output

2

程序代码:

#include

#include

using namespace std;

double a;

int sum;

int n;

bool prime(){

相关文档
最新文档