[蓝桥杯-610]分数

题面

解答

这一题如果不知道数论结论的话,做这个题会有两种天壤之别的体验

此题包含以下两个数论知识

1. 2^0+2^1+2^2+...+2^(n-1)=2^n-1

2. 较大的数如果比较小的数的两倍大1或者小1,则两者互质

所以答案就是2^n-1/2^(n-1)

标程1

我的初次解答

cpp 复制代码
#include <bits/stdc++.h>

using namespace std;

typedef long long int ll;
#define endl "\n"
#define maxLine 110
#define long long int ll;

ll num=20;

int main() {
    cout<<(ll)pow(2,20)-1<<"/"<<(ll)pow(2,19);
    return 0;
}

但是感觉好像有点慢

下午我么们来用快速幂优化一下

标程2

使用快速幂优化

cpp 复制代码
#include <bits/stdc++.h>

using namespace std;

typedef long long int ll;
#define endl "\n"
#define maxLine 110
#define long long int ll;


// ll mul(ll a,ll b,ll mod)
// {
//     a %= mod;
//     b %= mod;
//     return (a*b-((ll)((long double)a/mod*b))*mod+mod)%mod;
// }
inline ll ksm(ll a,ll b ){
    ll res=1;
    while(b){
        if (b&1) res*=a;
        b>>=1;
        a*=a;
    }
    return res;
}
int main() {
    cout<<(ll)ksm(2,20)-1<<"/"<<(ll)ksm(2,19);
    return 0;
}

奇怪,优化后的代码空间和时间居然没有任何提升。。。

相关推荐
Chester_19998 小时前
CSP202312C.树上搜索
开发语言·数据结构·c++·蓝桥杯·stl
CoderYanger2 天前
A.每日一题:3622. 判断整除性
java·程序人生·算法·leetcode·面试·职场和发展·蓝桥杯
Chester_19993 天前
CSP202303C.LDAP
开发语言·c++·蓝桥杯·stl
Chester_19997 天前
CSP202206C.角色授权
开发语言·数据结构·c++·蓝桥杯
Chester_19997 天前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯
Chester_199911 天前
CSP202104C.DHCP服务器
开发语言·程序人生·蓝桥杯
_Narcissus_13 天前
二分算法笔记及例题
数据结构·c++·笔记·算法·蓝桥杯·查找·二分算法
aqiu11111116 天前
【算法刷题】蓝桥杯/AtCoder:删除元素后的中位数问题(Symmetry / Median)
算法·蓝桥杯·排序·中位数
恣逍信点21 天前
《凌微经》价值论:变化即本体,价值即涌现
人工智能·科技·程序人生·蓝桥杯·业界资讯·交友·哲学
小龙报24 天前
【优选算法】1.搜索插入位置 2.x的平方根
java·c语言·数据结构·c++·python·算法·蓝桥杯