2.23打卡day17

97.回文数2

问题描述

有一天,明明正在做作业,发现了一组很有趣的数字,例如1、11、313等等。他发现这些数字都是左右对称的,即不论你把这些数字从左读到右还是从右读到左,读出来的数字都是一样的。于是明明就把这个发现告诉了他爸爸。明明的爸爸是一名数学家,对此类型数字早有研究。他对明明说:“这些是回文数,是一种特殊的数字,即这些数字的左右两边是对称的。例如:11左右两边对称,313左右也是对称的。” 明明觉得这很有趣,接着问他爸爸还有什么和这类回文数有关的有趣的东西。明明的爸爸就说:“你把这些回文数转换成二进制数,看看是不是也符合回文数的规则。”明明发现1的二进制数也是1,符合回文数的规则;11的二进制数是1011,不符合回文数的规则;33的回文数是100001,符合回文数的规则。明明就回答爸爸说:“1和33的二进制数符合回文数的规则,11的二进制数则不符合回文数的规则。” 明明爸爸很满意明明的回答,又给了明明很多十进制数,让他判断在这些数中哪些数既是十进制回文数又是二进制回文数。明明起先做起来很有意思,但是时间一长就失去了兴趣。他想请你帮个忙,帮他写一个程序,用来判断一个数,它的十进制数是回文数,且它的二进制数也是回文数。

明明的问题可以归结为:给你一个整数(十进制),判断该整数的十进制数和它的二进制数是否全为回文数。

#include <iostream>
#include <string>
using namespace std;

// 判断是不是回文
int huiwen(string s) {
    int i = 0;
    int j = s.length() - 1;
    while (i < j) {
        if (s[i] != s[j]) {
            return 0;
        }
        i++;
        j--;
    }
    return 1;
}

// 转换成二进制
string to2(int x) {
    if (x == 0) {
        return "0";
    }
    string s = "";
    while (x > 0) {
        if (x % 2 == 0) {
            s = "0" + s;
        } else {
            s = "1" + s;
        }
        x = x / 2;
    }
    return s;
}

int main() {
    int num;
    
    while (cin >> num) {
        // 转成十进制字符串
        string shi = "";
        int temp = num;
        if (temp == 0) {
            shi = "0";
        } else {
            while (temp > 0) {
                char c = '0' + (temp % 10);
                shi = c + shi;
                temp = temp / 10;
            }
        }
        
        // 转成二进制字符串
        string er = to2(num);
        
        // 判断
        if (huiwen(shi) && huiwen(er)) {
            cout << "Yes" << endl;
        } else {
            cout << "No" << endl;
        }
    }
    
    return 0;
}

98.加法器

问题描述

明明读小学的时候,不喜欢数学,尤其是不喜欢做加法,一做加法就头疼,这样导致明明长大后数学依然不好,而且对数字产生了抵触心理。可是不巧的是,明明进了一家会计公司,每天都要计算很多数据,在这些计算中加法运算居多,而且这些加法不只是是两个数之间的加法,更有多个数的连加。 例如:1+2+3的正确答案是6。 这给明明造成了很大的麻烦。你是明明的好朋友,看到明明如此痛苦,就产生了帮助明明的想法。你想帮明明写一个程序,这个程序能计算一串正整数的连加,从而帮助明明摆脱数字的困扰。 明明的问题可以归结为:给你一串正整数的连加表达式,完成这个表达式的计算。

#include <iostream>
#include <string>
using namespace std;

int main() {
    string s;
    
    // 一直读直到文件结束
    while (cin >> s) {
        long long sum = 0;  // 用long long防止溢出
        string temp = "";   // 临时存当前数字
        
        // 遍历表达式的每个字符
        for (int i = 0; i < s.length(); i++) {
            if (s[i] == '+') {
                // 遇到加号,把前面的数字加到sum里
                if (temp != "") {
                    // 把字符串转成数字
                    int num = 0;
                    for (int j = 0; j < temp.length(); j++) {
                        num = num * 10 + (temp[j] - '0');
                    }
                    sum = sum + num;
                    temp = "";  // 清空临时字符串
                }
            } else {
                // 如果是数字,加到temp后面
                temp = temp + s[i];
            }
        }
        
        // 处理最后一个数字
        if (temp != "") {
            int num = 0;
            for (int j = 0; j < temp.length(); j++) {
                num = num * 10 + (temp[j] - '0');
            }
            sum = sum + num;
        }
        
        // 输出结果
        cout << sum << endl;
    }
    
    return 0;
}

构造序列

问题描述

序列是在数学世界中一种非常有趣的数字现象,它通过某一规则来产生数字,使数字变得有趣、变幻无穷。很多数学家对序列这种事物产生了浓厚的兴趣,花了很多时间对其进行研究,明明就是其中的一位。一天,他又在研究一种新的序列产生规则,该序列的规则如下:

1) 第1轮,写出两个1,即11;

2) 第2轮,在它们中间插入2,成为121;

3) 第3轮,在上面数中每两个相邻的和为3的数之间插入3,成为13231;

4) 以此类推下去,第n轮,在第n-1轮的数字的基础上,每两个相邻的和为n的数之间插入n。

明明根据这个规则开始构造序列。开始还觉得容易,但是越到后面,明明发现构造序列的计算量越来越大,计算难度也越来越高,计算速度也越来越慢。于是,明明就求助于你这位程序设计专家,能否帮他写一个程序,构造出序列的前9项,然后当明明需要知道序列中的哪一项的时,你就把那一项的数字告诉明明。

明明的问题可以归结为:根据题目描述中所描述的序列产生规则构造序列的前9项,然后告诉你一个正整数n,要求你输出序列的第n项。

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str[10];
    str[1] = "11";
    
    for (int i = 2; i <= 9; i++) {
        string last = str[i-1];
        string now = "";
        
        for (int j = 0; j < last.length(); j++) {
            now = now + last[j];
            
            if (j < last.length()-1) {
                int a = last[j] - 48;
                int b = last[j+1] - 48;
                if (a + b == i) {
                    char c = i + 48;
                    now = now + c;
                }
            }
        }
        str[i] = now;
    }
    
    int x;
    while (cin >> x) {
        cout << str[x] << endl;
    }
    
    return 0;
}

计算机英语刘艺第五版unit12 英语翻译

2.赋能(Enabling)与协同(Synergistic)技术

        许多技术可以被用于构建物联网基础设施(infrastructure)和特定的应用领域的专用(specific)物联网络。这些技术可以被分为两类。赋能技术构建了物联网的基础。在这些赋能技术中,追踪技术(RFID射频识别技术),传感器网络和GPS定位系统至关重要。

        RFID射频识别技术通过任何物体上的电子标签或RFID标签对其监控和追踪。这些标签可以应用于任何物体,比如商品(merchandise),工具,智能手机,电脑,动物或者人。它可以通过无线电波(radio waves)或传感信号(sensing signal)识别并追踪物体。部分标签通过无限读取器,可以从十米乃至百米开外被读取。大部分RFID标签包含至少两个主要部分。一个是集成电路(integrated circuit),用于信息处理于存储,射频信号的调制(modulating解调(demodulating )以及其他特殊功能。另一部分就是可以接收和发送信号的天线(antenna)。

        当今的传感器网络大部分都是无线的,即广为人知的无线传感器网络。一个典型的无线传感器网络通过多个空间自动分布传感器的协同工作来监测物理或环境条件,比如气温,声音,振动(vibration),压力,运动或污染物(pollutants)。无线传感网络的发展是由军事应用促进的,比如战场监视(surveillance)。无线传感网络技术现在用于工业和文化应用领域,包括过程监测和控制,机器健康监测,环境和栖息地监测,医疗健康和家庭自动,以及智能交通控制。

AI翻译对比

二、赋能技术与协同技术
众多技术可应用于构建物联网基础设施及面向特定应用领域的专用物联网系统。支撑技术可分为两类:赋能技术奠定了物联网的根基。在赋能技术中,追踪技术(射频识别)、传感器网络和全球定位系统尤为关键。

射频识别技术通过电子标签或RFID标签应用于被监测或追踪的各类物体上。这些标签可附着于任何物品,例如商品、工具、智能手机、计算机、动物或人员。其核心功能是利用无线电波或传感信号对物体进行识别与追踪。部分标签可通过无线读取器在数十米乃至数百米外被识别读取。多数RFID标签至少包含两大核心组件:其一是集成电路,负责信息存储与处理、射频信号的调制解调以及其他特殊功能;其二是天线,用于接收和发射无线电信号。

当今的传感器网络大多采用无线形式,即无线传感器网络。典型的无线传感器网络由空间分布的自主传感器构成,通过协同工作监测物理或环境状况,例如温度、声音、振动、压力、运动或污染物等。无线传感器网络的发展最初源于军事应用需求,如战场监视。如今,该技术已广泛应用于众多工业和民用领域,包括过程监测与控制、机械设备健康监测、环境与栖息地监测、医疗健康与家庭自动化,以及智能交通管控等。

计算机英语单词扇贝打卡

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值