蓝桥云课760数的计算
一、递归
题目:
我的解题代码:
#include <iostream>
using namespace std;
int sum=0;
int main()
{// 请在此输入您的代码int n;cin>>n;int fun(int n);fun(n); cout<<sum<<'\n';return 0;
}
//
void fun(int n){if(n==0){return ;}elsefor(int i=0;i<=n/2;i++){fun(i);}sum++;
}
注意:其中使用了dfs搜索
二、进制转换
1、任意进制转十进制:
k进制(k>10)整数转化成十进制。把K进制的每一位数放进数组中。
代码模板:res表示结果,k表示k进制转化为十进制,a【i】里边放的是任意进制的每一位数。
int res=0;//存放结果 for(int i=1;i<=n;i++){ res=res*k+a[i]; } cout<<res<<'\n';
原理:
例题: 题目链接:蓝桥账户中心
- 题目:
解题代码:
#include <iostream> using namespace std; int main() {// 请在此输入您的代码int a[]={2,0,2,1,10,11,12,13,14};//这个是十六进制的数//转化成十进制,使用模板int res=0,k=16;for(int i=0;i<8;i++){res=res*k+a[i];}cout<<res;return 0; }
2、十进制转换为其他进制:
- 代码模板:
- 十进制数x,
int x,i=0;//x是十进制数 while(x){ a[++i]=x%k,x=x/k; reverse(a+1,a+1+i);//翻转,使得高位在1的位置 }
原理:
同样是这个公式,k表示要转化为k进制,x是公式的和。
任意进制转化成任意进制
题目:进制转换*
思路:
第一步,将字符串的每个字符转化成数字。
第二步,先转化成十进制,再从十进制转化成其他进制!!!!
代码:
#include <bits/stdc++.h> using namespace std; char ch[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; int a[1000]; void fun(){int N,M;cin>>N>>M;string s;cin>>s;//第一步将其转化成数字for(int i=0;i<s.size();i++){if(s[i]>='0'&&s[i]<='9')a[i]=s[i]-'0';else if(s[i]>='A'&&s[i]<='Z')a[i]=s[i]-'A'+10;}//任意进制转化成十进制int x=0; //x存放转化成十进制的值for(int i=0;i<s.size();i++){x=x*N+a[i];}//十进制转化成任意进制string st;int index=0;while(x)st=st+ch[x%M],x=x/M;reverse(st.begin(),st.end());cout<<st<<'\n'; }int main() { int T;cin>>T; while(T--){fun(); } }
一、十进制转二进制
#include <iostream>
#include <vector>
using namespace std;vector<int> decimalToBinary(int num) {vector<int> binary;while (num > 0) {binary.push_back(num % 2);num = num / 2;}return binary;
}
二、十进制转十六进制
#include <iostream>
#include <string>
using namespace std;string decimalToHexadecimal(int num) {string hexadecimal = "";char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};while (num > 0) {int remainder = num % 16;hexadecimal = hexDigits[remainder] + hexadecimal;num = num / 16;}return hexadecimal;
}
三、二进制转十进制
#include <iostream>
#include <vector>
using namespace std;int binaryToDecimal(vector<int> binary) {int decimal = 0;int power = 0;for (int i = binary.size() - 1; i >= 0; i--) {decimal += binary[i] * (1 << power);power++;}return decimal;
}
四、十六进制转十进制
#include <iostream>
#include <string>
using namespace std;int hexadecimalToDecimal(string hexadecimal) {int decimal = 0;int power = 0;for (int i = hexadecimal.size() - 1; i >= 0; i--) {if (isdigit(hexadecimal[i])) {decimal += (hexadecimal[i] - '0') * (1 << (4 * power));} else {decimal += (hexadecimal[i] - 'A' + 10) * (1 << (4 * power));}power++;}return decimal;
}
可以根据实际需求调用这些函数来进行进制转换操作。