首页 > 其他分享 >5.10洛谷收获

5.10洛谷收获

时间:2024-05-11 16:19:37浏览次数:22  
标签:binary 洛谷 int n% 34 二进制 5.10 收获

1.求幂函数 #include pow(a,b); 计算a的b次幂

2.error: invalid types 'int[int]' for array subscript| 记住这个错误吧,犯过好多次了

数组变量名不一致或者是没定义

数组空间不够

变量名和数组名重复定义

3.快速幂

快速幂本质上是一个倍增问题,比如说

要求6的34次方

如果34个6相乘,就很复杂

但是如果这样的话

34的二进制是100010

用二进制来算,就可以大大减少计算的次数

//n为二进制的一串数
while(n!=0){
int r=1;
if(n%2==1){ //将二进制的某一位取模,如果是1的话,就说明这一位有数字1,然后就得数   
 r=r*a; 
}                              
a=a*a;     //不论n是否为1,a都继续乘a
n=n%2;     //n右移
return r;
}

 

 

#include <iostream>
using namespace std;

#define N 100


void get_(int n, int binary[]) {
    int i = 0;
    while (n > 0) {
        binary[i] = n % 2;
        n = n / 2;
        i++;
    }
    // 输出二进制表示形式
    for (int j = i - 1; j >= 0; j--) {
        cout << binary[j];
    }
}

// 计算 m 的 n 次幂
long long quickPower(int a[], int n, int m) {
    int r = 1;
    for (int i = 0; i < n; i++) {
        if (a[i] % 2 == 1) {
            r = r * m;
        }
        m = m * m;
    }
    return r;
}

int main() {
    int n, m;
    // 输入 n 和 m
    cin >> n >> m;
    // 存储 n 的二进制表示形式
    int binary[N];
   get_(n, binary);
    cout << endl;

    // 计算 m 的 n 次幂
    long long  result = quickPower(binary, n, m);
    cout << "Result: " << result << endl;

    return 0;
}

 

标签:binary,洛谷,int,n%,34,二进制,5.10,收获
From: https://www.cnblogs.com/sly-345/p/18185365

相关文章

  • 5.10
    jetpackcompose主题设计funEmailDetailAppBar(email:Email,isFullScreen:Boolean,modifier:Modifier=Modifier,onBackPressed:()->Unit){TopAppBar(modifier=modifier,title={Column(......
  • #Trie#洛谷 6018 [Ynoi2010] Fusion tree
    题目给定一棵树,树上每个节点都有点权,需要实现三种操作,第一种是将与\(x\)相邻的所有节点点权加一,第二种是单点减小点权,第三种是查询与\(x\)相邻的所有节点点权的异或和分析相邻实际上就是父节点和子节点,不妨将其拆开考虑,需要解决单点查询单点修改的问题,考虑维护\(n\)......
  • 洛谷题单指南-动态规划3-P1775 石子合并(弱化版)
    原题链接:https://www.luogu.com.cn/problem/P1775题意解读:计算合并石子的最小代价,区间DP。解题思路:状态表示:dp[i][j]表示将第i~j堆石子合并的最小代价,m[i]表示第i堆石子质量,s[i]表示前i堆石子质量前缀和状态转移:考虑最后一次合并,设最后一次合并是将i~k合成的一堆与k+1~j合成......
  • 洛谷题单指南-动态规划2-P3147 [USACO16OPEN] 262144 P
    原题链接:https://www.luogu.com.cn/problem/P3147题意解读:将一组数据两两相邻且相同的合并,合并成一个数值+1的数,求合并后的最大值。解题思路:考虑合并后的最大数i,其最后一次必然是由两个i-1合并而来的设dp[i][j]表示以j为左端点,合并最大值为i时的右端点的下一个位置如图:dp[i......
  • 5.9洛谷收获
    今天发现了一个有用的容器,那就是向量,用bool类型的向量简直不要太方便,尤其是对于二极管问题,比如B2094然后用向量模拟栈也比较方便点击查看代码#include<iostream>#include<vector>usingnamespacestd;classStack{private:vector<int>elements;public://......
  • 洛谷 P1031 [NOIP2002 提高组] 均分纸牌 题解
    题目简述有$N$堆纸牌,编号分别为$1,2,\ldots,N$。每堆上有若干张,但纸牌总数必为$N$的倍数。可以在任一堆上取若干张纸牌,然后移动。移牌规则为:在编号为$1$堆上取的纸牌,只能移到编号为$2$的堆上;在编号为$N$的堆上取的纸牌,只能移到编号为$N-1$的堆上;其他堆上取的纸牌,可......
  • 洛谷 P1012 [NOIP1998 提高组] 拼数 题解
    题目简述设有$n$个正整数$a_1\dotsa_n$,将它们联接成一排,相邻数字首尾相接,组成一个最大的整数。题目分析定义设$X$为数字$x$的字符串形式。$A+B$表示字符串$A$和字符串$B$相连组成的字符串。思路既然要构造最优解,显然如果有不优的情况的话,就需要对序列进行......
  • 2024.5.10家长会发言
    大家好,我是初三四班的学习委员包赟瑞,接下来由我来对半个学期的班级学习情况做一个总结。整体来看,全班的学习态度有一定进步,布置的打卡任务大多能按时完成。但是不能仅仅满足于此,像政治这种需要背诵的学科,许多同学在课下不爱背、不愿背,没有老师监督便开始摆烂,类似这样的不自律行为......
  • #dp,Dilworth定理#洛谷 4934 礼物
    题目传送门分析首先,可以放在一起当且仅当\(\max\{a_i,a_j\}\&\min\{a_i,a_j\}\neq\min\{a_i,a_j\}\)根据Dilworth定理可知最小链划分中链的数目等于最长反链的长度所以设\(dp[i]\)表示以\(i\)为结尾的反链的最大长度,则\(dp[i]=\max_{j|i}\{dp[j]\}+[a_k==i]\)......
  • 洛谷题单指南-动态规划2-P4310 绝世好题
    原题链接:https://www.luogu.com.cn/problem/P4310题意解读:求最长的子序列长度,使得每相邻两个元素&操作不为0。解题思路:直观来看,可以通过类似最长上升子序列的算法,进行状态转移,但是复杂度为O(n^2),会超时状态表示:dp[i]表示前i个数能产生满足条件的子序列的最长长度状态转移:dp......