17 条题解
-
11
我就不用函数,哎,就是玩!
#include <iostream> using namespace std; void gcd(long long m, long long n)//辗转相除法 { if (m % n == 0) { cout << n;//输出 return; } gcd(n, m % n); } int main() { long long m, n; cin >> m >> n; gcd(m, n);//调用函数 #include <iostream> return 0; }//推荐率:60%
其实采用这种方法也可以:
#include <bits/stdc++.h> using namespace std; int main() { long long a, b, t; cin >> a >> b; while (a % b != 0) { t = a % b; a = b; b = t; } cout << b; #include <iostream> return 0; }//推荐率:40%
点👍 加回复,永远不迷路!
-
1
用函数
#include <bits/stdc++.h>//记头文件太麻烦了。 using namespace std; int main() { long long m,n; cin>>m>>n;h cout<<__gcd(n,m); //%45推荐率。 }
正常法
#include <iostream> using namespace std; int gcd(int a,int b)//辗转相除法 { if(b==0) { return a; } return gcd(b,a%b); } int main() { int m,n;cin>>m>>n; cout<<n/gcd(n,m)*m; } //%55推荐率
还是老规矩,再来一个
叛逆法
#include<iostream> int main(){std::cout<<20000000000000000;}
最短代码!!!
已AC,请放心食用。
#includ
-
1
题面: 说明 把一块mn米的土地分割成同样大的正方形,如果要求没有土地剩余,分割出的正方形土地最大边长是多少米?(最少不能少于1米1米) 如:一块6米 * 4米的土地,能够分割的最大的正方形的边长为2米。(5.2.45) 输入格式 两个整数m和n(m,n <= 1000000000000000000)
思路: 转化为数学问题:求两个数的最大公因数。 看似简单,但是要注意数据范围: “两个整数m和n(m,n <= 1000000000000000000)” 如果用int就过不了,所以务必要开long long!
代码: #include <iostream> #include <cstdio> #include <cmath> using namespace std; long long gcf(long long a,long long b){//注意数据范围 if(b!=0){ gcf(b,a%b);//递归 } else return a;//结束 } int main() { long long a,b; cin>>a>>b; cout<<gcf(a,b);//调用 return 0; }
- 1
信息
- ID
- 332
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 6
- 标签
- 递交数
- 1697
- 已通过
- 475
- 上传者