1.进制转换

用递归算法将一个十进制整数 𝑋X1≤𝑋≤1091X109)转换成任意进制数 𝑀M2≤𝑀≤162M16𝑀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;
}

 

posted on 2024-06-09 17:29  fafrkvit  阅读(44)  评论(0编辑  收藏  举报