1.进制转换
用递归算法将一个十进制整数 𝑋X(1≤𝑋≤1091≤X≤109)转换成任意进制数 𝑀M(2≤𝑀≤162≤M≤16,𝑀M 为整数)。
输入格式
一行两个数,第一个十进制整数 𝑋,第二个为进制 𝑀
void Reverse(int m,int x){
string c='0123456789ABCDEF';
if(m/x) Reverse(m/x,x);
cout<<c[m%x];
}
//这道题真的非常的巧妙,我真的好喜欢😊,如果是求二进制转换,那么余数不会大于等于2,6不6😍
一个string把所有进制情况都考虑进去了
2.确定进制
题目描述
6 ×9=42 对于十进制来说是错误的,但是对于 13 进制来说是正确的。即 6(13) ×9(13)=42(13),而 42(13)=4 ×131+2 ×130=54(10)。
你的任务是写一段程序读入三个整数 𝑝,𝑞 和 𝑟,然后确定一个进制 𝐵(2≤𝐵≤16) 使得 𝑝 ×𝑞=𝑟。如果 𝐵 有很多选择,则输出最小的一个。
例如:𝑝=11,𝑞=11,𝑟=121,则有 11(3) ×11(3)=121(3),因为 11(3)=1 ×31+1 ×30=4(10) 和 121(3)=1 ×32+2 ×31+1 ×30=16(10)。对于进制 10, 有 11(10) ×11(10)=121(10)。这种情况下,应该输出 3。如果没有合适的进制,则输出 0。
输入格式
一行,包含三个整数 𝑝,𝑞,𝑟相邻两个整数之间用单个空格隔开。
输出格式
一个整数:即使得 𝑝×𝑞=𝑟成立的最小的 。如果没有合适的 ,则输出 0。
//蔓越莓芝士
char s='5';
int n;
n=s-'0';
//n=5;
//将字符数字转换为整数数字
to_string(int n)//[string]
//将整数型n转换为字符型n
//转化后123456变成‘123456’
reverse(区间a,区间b)//[algroithm]
//把区间a和区间b反转
//'12345678'--->'87654321'
r = max(r, s[i] - '0');
//这行代码在控制输出格式,找未知的最大上面特别好用
3.取质优化
bool isPrime(int t){
if(t<=1) return 0;
for(int i=2;i<=sqrt(t);i++){
if(t%i==0) return 0;
}
else return 1;
}
4.三元条件运算符
#include <iostream>
int main() {
// 整数类型的三元条件运算符
int x = 10, y = 20;
int result1 = (x > y ? x : y);
std::cout << "result1: " << result1 << std::endl; // 输出 20
// 浮点类型的三元条件运算符
double a = 10.5, b = 20.7;
double result2 = (a > b ? a : b);
std::cout << "result2: " << result2 << std::endl; // 输出 20.7
// 不同类型之间的三元条件运算符
int num = 25;
double pi = 3.14;
double result3 = (num > 20 ? num : pi);
std::cout << "result3: " << result3 << std::endl; // 输出 25.0,因为 25 被转换为 double 类型
// 指针类型的三元条件运算符
int array1[5] = {1, 2, 3, 4, 5};
int array2[3] = {6, 7, 8};
int* ptr = (sizeof(array1) > sizeof(array2) ? array1 : array2);
std::cout << "ptr[0]: " << ptr[0] << std::endl; // 输出 1,因为 array1 比 array2 长
return 0;
}