SDUSTOJ
来源:互联网 发布:怎么在mac上装windows 编辑:程序博客网 时间:2024/06/05 05:52
SDUSTOJ - 1298 递归的辗转相除法
Description
辗转相除法,也称欧几里得算法,是求最大公约数的算法。辗转相除法首次出现于欧几里得的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。
两个整数的最大公约数(亦称公约数)是能够同时整除它们的最大的正整数。辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。根据这个原理,不难得出用辗转相除法求最大公约数的递归定义:
下面,给出两个正整数A和B,求他们的最大公约数(gcd(A,B))和最小公倍数(lcm(A,B))。Invalid Word(禁用单词)错误:在解决这个题目时,某些关键词是不允许被使用的。如果提交的程序中包含了下列的关键词之一,就会产生这个错误。
被禁用的关键字:循环语句for、while,甚至包括分支语句的switch、case、goto、break。
被禁用的头文件:math.h、stdlib.hInput
输入为两个整数A和B,满足0 < A , B < 2^15Output
输出两数,分别为gcd(A,B)和lcm(A,B),用一个空格分隔。Sample Input
24 36Sample Output
12 72
AC代码
#include <stdio.h>int gcd(int x, int y){ return y ? gcd(y, x%y) : x;}/* 复杂gcd *///int gcd(int a, int b) //求最大公约数//{// if( a == b )// return a;// else if( a != 0 && b == 0 )// return a;// else if( b != 0 && a == 0 )// return b;// if( a > b )// {// int temp;// temp = a;// a = b;// b = temp;// }// int mid = b % a;// while( mid != 0 )// {// b = a;// a = mid;// mid = b % a;// }// return a;//}int lcm(int a, int b){ int x, y ; x = a * b; y = x / gcd(a,b); return y;}int main(){ int a,b; scanf("%d%d",&a,&b); printf("%d %d\n",gcd(a,b),lcm(a,b)); return 0;}
阅读全文
0 0
- SDUSTOJ
- SDUSTOJ
- SDUSTOJ 1466
- SDUSTOJ 1184
- SDUSTOJ 1334
- SDUSTOJ T1581 Average Number
- SDUSTOJ T1587 YES! YOU CAN!
- [SDUSTOJ 1450]捡石子游戏
- SDUSTOJ-说好的点呢
- SDUSTOJ Problem F: 一元二次方程类
- SDUSTOJ Problem D: 时间类的构造和输出
- SDUSTOJ Problem E: 时间类的成员读写
- SDUSTOJ Problem H: 稀疏矩阵的表示和运算
- Problem H: 稀疏矩阵的表示和运算 SDUSTOJ
- SDUSTOJ Problem A: 平面上的点——Point类 (I)
- SDUSTOJ Problem A: 平面上的点——Point类 (I)
- SDUSTOJ Problem B: 平面上的点——Point类 (II)
- SDUSTOJ Problem C: 平面上的点——Point类 (III)
- AndroidStudio导入jar包和library项目开源库
- Week03_day04 异常
- 【Java】RMI框架搭建
- 浅析JBPM工作流引擎
- 2017 12.29的c语言编程作业
- SDUSTOJ
- [jzoj]3541. 【清华集训2014】破冰派对(组合数+思维)
- 设计模式-工厂方法模式
- 这一定是最简单的MVP+Retrofit
- ffmpeg视音频同步
- 717. 1-bit and 2-bit Characters
- 嵌入式软件学习路线图!
- Mask-RCNN技术解析
- 《剑指offer》刷题笔记(时间空间效率的平衡):两个链表的第一个公共结点