2026.2.22——OJ98-100题

T98:加法器------字符串

代码实现:

#include <iostream>

#include <string>

#include <sstream>

using namespace std;

int main(){

string line;

while(getline(cin,line)){

if(line.empty()) continue;

istringstream iss(line);

string token;

long long sum=0;

while(getline(iss,token,'+')){

sum+=stoll(token);// 将数字字符串转换为整数并累加

}

cout<<sum<<endl;// 输出结果并换行

}

return 0;

}

个人思考:

istringstream iss(line); 创建一个字符串流 iss,将当前行的字符串 line 绑定到流中,便于按分隔符提取内容。

string token; 用于存储被加号分割出来的每个数字字符串。

long long sum = 0; 定义长整型变量 sum 并初始化为0,用于累加和。因为表达式长度不超过1000,数字最大30000,但多个数累加可能超出 int 范围,使用 long long 更安全。

while (getline(iss, token, '+')) 循环从 iss 中读取子串,直到遇到分隔符 '+' 或流结束。每次读取的结果存入token,例如对于表达式 "1+2+3",依次得到 "1"、"2"、"3"。

sum += stoll(token); stoll 函数将 token(字符串)转换为 long long 整数,并累加到 sum 中。stoll 能正确处理正整数字符串。

T99:构造序列------字符串

代码实现:

#include <iostream>

#include <string>

using namespace std;

int main(){

string seq[10];

seq[1]="11";

for(int n=2;n<=9;n++){

**const string& prev=seq[n-1];//**上一轮的序列

string next;

int len=prev.length();

//遍历上一轮序列中每一对相邻的数字

for(int i=0;i<len-1;i++){

next.push_back(prev[i]);//先将左边的数字加入新序列

int a=prev[i]-'0';

int b=prev[i+1]-'0';

if(a+b==n){//如果相邻两个数字之和等于当前的轮数

next.push_back('0'+n);//则在它们之间插入数字n(转为字符)

}

}

next.push_back(prev[len-1]);// 最后将最后一个数字加入新序列

seq[n]=next;// 保存本轮生成的序列

}

int n;

while(cin>>n){

cout<<seq[n]<<endl;

}

return 0;

}

个人思考:

这行代码const string& prev = seq[n - 1]; 的作用是创建一个常量引用 prev,让它指向数组 seq 中索引为 n-1 的元素(即上一轮的序列字符串)。从初始的"11"开始,每一轮根据前一个序列,在相邻两个数字之和等于当前轮数的地方插入该数字。这种构造方式类似于一种递归的"插入"过程,使得每个新序列都蕴含着前一个序列的相邻关系信息。通过手动推导前几个序列(如"11"→"121"→"13231"→"1432341"),可以发现序列长度迅速增长,且数字分布似乎与轮数有某种对称性。

T100:纯粹合数------字符串

代码实现:

#include <iostream>

using namespace std;

//判断一个数是否为合数(大于1且不是质数)

bool is_composite(int x){

if(x<2) return false;

for(int i=2;i*i<=x;i++){

if(x%i==0) return true;

}

return false;

}

//去掉一个数的最高位,返回剩下的数:104->4、100->0

int remove_highest(int x){

int divisor=1;

int temp=x;

while(temp>=10){

divisor*=10;

temp/=10;

}

return x % divisor;

}

//判断一个数是否为纯粹合数

bool is_pure(int x){

if(x==0) return true;

if(x<10){

return (x==4||x==6||x==8||x==9);

}

if(!is_composite(x)) return false;//本身必须是合数

int rest=remove_highest(x);//去掉最高位

return is_pure(rest);//递归检查剩余部分

}

int main(){

int pure[100];

int count=0;

int num=100;

while(count<100){

if(is_pure(num)){

pure[count++]=num;

}

num++;

}

int n;

while(cin>>n){

cout<<pure[n-1]<<endl;

}

return 0;

}

个人思考:

这道题比较难的地方在去掉最高位函数:通过循环计算与 x 位数相同的10的幂(如 100 对应 100),然后用 x % divisor 得到去掉最高位后的值。判断合数其实和之前的判断素数有异曲同工之处。

英语翻译:

P72:3. 人工智能

人工智能(AI)研究旨在让计算机和机器模仿人类的智能与感官处理能力,并通过计算机对人类行为进行建模,以加深我们对智能的理解。人工智能研究的众多分支包括机器学习、推理、认知、知识表示、问题求解、基于案例的推理、自然语言理解、语音识别、计算机视觉以及人工神经网络。

mimic:模仿、模拟

sensory:感官的、感觉的

inference:推理、推断

cognition:认知

P73:4. 机器人学

计算机科学的另一个应用广泛的领域是机器人学------ 即计算机控制的机械装置的设计与开发。机器人的复杂度跨度很大,从玩具到自动化工厂装配线不等,它们能将人类从枯燥、重复或危险的任务中解放出来。在速度、精度、一致性或清洁度要求远超人类能力的场景中,也会使用机器人。机器人学家(即从事机器人学领域研究的科学家)研究控制机器人的诸多方面,包括:

对机器人的物理属性进行建模、对机器人所处的环境进行建模、规划机器人的动作、高效地控制其机械装置、利用传感器为控制程序提供反馈、确保机器人行为的安全性。他们还研究简化控制程序创建的方法。其中一个研究方向是让机器人具备更多人类的灵巧性和适应性,这一领域与人工智能(AI)联系紧密。

complexity:复杂度、复杂性

automated:自动化的、自动运行的

assembly:装配、组装

tedious:枯燥的、冗长乏味的

repetitive:重复的、反复的

roboticists:机器人学家

sensors:传感器

dexterity:灵巧性、灵活性

P74:5. 人机交互

人机交互界面为人们使用计算机提供了途径。键盘就是一个典型的人机交互界面,它让人类可以向计算机输入指令,并在特定应用中输入文本。人机交互研究的多样性,对应着计算机用户群体和应用场景的多样性。不过,该领域有一个统一的核心主题:开发更优的交互界面,并通过实验评估其有效性。相关研究示例包括:改善残障人士使用计算机的可及性、简化程序操作流程、为虚拟现实开发三维输入与输出设备、提升手写识别与语音识别技术、为航空仪表开发平视显示器,在飞行员视野前方的屏幕上显示速度、高度、航向等关键信息。其中一个被称为可视化的研究方向,专注于以图形化方式呈现海量数据,使人们能够理解数据的关键特征。

diversity:多样性、差异性

unifying:统一的、一致的

disabilities:残疾、障碍

three-dimensional:三维的、立体的

virtual reality:虚拟现实

head-up displays:平视显示器

aircraft:飞行器、航空器

altitude:高度、海拔

visualization:可视化

graphically:以图形方式、图像化地

comprehend:理解、领会

背单词:

相关推荐
waves浪游1 小时前
库制作与原理(上)
linux·运维·服务器·开发语言·c++
闻缺陷则喜何志丹1 小时前
【差分数组】P9166 [省选联考 2023] 火车站|普及+
数据结构·c++·洛谷·差分数组
tankeven2 小时前
HJ99 自守数
c++·算法
一只理智恩2 小时前
基于 CesiumJS + React + Go 实现三维无人机编队实时巡航可视化系统
前端·人工智能·算法·golang·无人机
菜鸡儿齐2 小时前
leetcode-分割回文串
算法·leetcode·职场和发展
重生之我是Java开发战士2 小时前
【优选算法】链表:两数相加,两两交换节点,重排链表,合并K个升序链表,K个一组反转链表
数据结构·算法·链表
菜鸡儿齐2 小时前
leetcode-组合总和
算法·leetcode·深度优先
滴滴答滴答答2 小时前
LeetCode Hot100 之 19 接雨水
算法·leetcode·职场和发展
网小鱼的学习笔记2 小时前
leetcode283移动零元素
java·开发语言·算法