题目
1/1+1/2+1/4+1/8+...
每项是前一项的一半,如果一共有 20项,求这个和是多少,结果用分数表示出来。
类似:3/2,当然,这只是加了前 2 项而已。分子分母要求互质。
思路
②等比数列公式(幂级数),求最大公约数
③快速幂运算,求最大公约数
求最大公约数公共代码方法一:
#include <iostream>
using namespace std;
int measure(int x, int y)
{
int z = y;
while(x%y!=0)
{
z = x%y;
cout<<z<<endl;
x = y;
y = z;
}
return z;
}
int main()
{
int max = measure(12,5);
std::cout << max << std::endl;
return 0;
}求最大公约数公共代码方法二(递归):
#include <iostream>
using namespace std;
int measure(int x, int y)
{
if(y==0) return x;
return measure(y,x%y);
}
int main()
{
int max = measure(12,4);
std::cout << max << std::endl;
return 0;
}代码一:使用函数库求幂
#include <iostream>
#include<math.h>
using namespace std;
int main()
{
long numerator = pow(2,20)- 1;
long denominator = pow(2,19);
cout<<numerator<<"/"<<denominator<<endl;
return 0;
}代码二:快速幂运算实现pow()
#include <iostream>
using namespace std;
int measure(int x, int y)
{
if(y==0) return x;
return measure(y,x%y);
}
int pow_f(int base_num,int y){
int res = 1;
int x = base_num;
while(y > 0){
if(y&1){
res *= x;
}
y>>=1;
x *=x;
}
return res;
}
int main()
{
int gcd = measure(pow_f(2,20)-1,pow_f(2,19));
if(gcd == 1){
cout<<pow_f(2,20)-1<<"/"<<pow_f(2,19)<<endl;
}
else{
cout<<(pow_f(2,20)-1) / gcd<<"/"<<pow_f(2,19) / gcd<<endl;
}
return 0;
}0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复