蓝桥云课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 ;
}else
for(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;
}
可以根据实际需求调用这些函数来进行进制转换操作。