当前位置: 首页 > news >正文

打卡第十三天

1.最大与最小

问题描述

明明喜欢玩游戏,而明明的爸爸也乐意陪明明玩各种各样的小游戏。但是在游戏中,明明的爸爸又十分注意培养明明的智力,他希望通过游戏,不仅让明明得到快乐,而且又能让明明学到一些知识,锻炼他的思维能力,为将来的发展打下基础。一天,明明的爸爸和明明做起了一个叫“最大与最小”的游戏,游戏的规则简单但却很有趣,就是有M个整数,构成一个圆环,然后要在这个圆环中找出连续N个相邻的数,目的是要让这N个数的和达到最大或者最小。 例如:一共有5个整数,分别是:1、2、11、4、5,在这5个数中,取连续的3个数,然后我们能够达到的最大值是20(11+4+5),最小值是8(5+1+2)。 明明显然对这个游戏非常感兴趣,但是玩了几次后,明明发现这个游戏又并不是那么容易了,因为随着整数个数的增加,不同的取数方法越来越多,要找到最大最小值的难度就越来越高,到最后明明就变得有些不耐烦了,明明的爸爸发现了这个问题,于是就找到了你,他请你来帮明明一把,写一个程序,把这个环中可能达到的最大最小值找出来,然后告诉明明,而明明只需要找到是哪几个连续的数组成了最大最小值即可,这样可以节约很多的时间。 明明爸爸的问题可以归结为:在一个由M个整数构成圆环中,找出N个相邻的数,使其和为最大或最小。

输入说明

你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据,每组测试数据有二行,测试数据的第一行包含个两个整数M、N(1≤N≤M≤100),M表示圆环中整数的个数,N表示要连续取出的数的个数,M和N用一个空格隔开;测试数据的第二行有M个整数,即圆环中的数,每个数之间用一个空格隔开。每组测试数据与其后一组测试数据之间没有任何空行,第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。

输出说明

对于每一组测试数据,你写的程序要求计算出一组相应的运算结果,并将这一组运算结果作为你所写程序的输出数据依次写入到标准输出设备中。每组运算结果有两行,第一行首先输出“Max=”(不包含双引号),然后紧跟一个整数,即圆环中连续N个数的最大值;第二行首先输出“Min=”(不包含双引号),然后紧跟一个整数,即圆环中连续N个数的最小值。每组运算结果的行首和行尾都没有任何空格,每组运算结果与其后一组运算结果之间有一个空行,最后一组运算结果后面没有空行。 注:通常,显示屏为标准输出设备。

个人总结

1. long long maxSum = -2e18; // 初始化为极小值

long long minSum = 2e18; // 初始化为极大值

2.处理“圆环”最简单的方法是将数组“断环成链”:把原始数组复制一份接在后面

#include <iostream> #include <vector> #include <algorithm> using namespace std; int main(){ int m,n; bool first=true; while(cin>>m>>n){ vector<int> loop(m); for(int i=0;i<m;i++){ cin>>loop[i]; } //处理圆环:将原数组复制一份接在后面 vector<int> extended=loop; extended.insert(extended.end(), loop.begin(), loop.end()); long long max= -2e18; // 初始化为极小值 long long min= 2e18; // 初始化为极大值 for(int i=0;i<m;i++){ long long sum=0; for(int j=0;j<n;j++){ sum+=extended[i+j]; } if(sum>max){ max=sum; } if(sum<min){ min=sum; } } if(!first) cout<<endl; cout<<"Max="<<max<<endl; cout<<"Min="<<min<<endl; first=false; } return 0; }

2.三艘船

问题描述

明明由于工作的关系,经常需要坐船到某地出差办事。久而久之,明明就对这两地之间船的班次情况相当了解,他会根据办事的具体情况选择不同班次的船出行。这两地的船一共分为三个班次:特快船、快船、慢船,三个班次的船在同一天的0点从港口出发,并沿着同一路线匀速航行,只是它们到达目的地的时刻不同。 你作为明明的好朋友,有一次和明明在闲聊,问到他出差时船的航行距离有多少时,明明没有正面回答你这个问题,而只是把三艘船(特快、快、慢)的速度,以及它们到达目的地的时间是几点钟(并不知道分别是哪一天,只知道三艘船都在100天以内到达了终点)告诉了你,要你推算出两地间的距离长度。你作为一位程序设计专家,自然不会被明明的这个问题所难倒,于是你决定写一个程序,来求解这个看似困难其实简单的问题。 明明的问题可以归结为:给出三艘船的速度,以及它们到达目的地时是几点钟(并不知道分别是哪一天,只知道三艘船都在100天以内到达了终点),求两地间的距离到底有多少。若有多组解,只输出最小的那组解。

输入说明

你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据,每组测试数据占二行,第一行有3个正整数a、b、c,代表3艘船的到达港口那天的时间是几点钟(0≤a、b、c≤23)。第二行有3个正整数d、e、f代表3艘船的速度(0<d、e、f<30000),速度的单位是单位距离每小时。每组测试数据与其后一组测试数据之间没有任何空行,第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。

输出说明

对于每一组测试数据,你写的程序要求计算出一组相应的运算结果,并将这一组运算结果作为你所写程序的输出数据依次写入到标准输出设备中。每组运算结果由一个整数构成,代表路程的长度,若有多组解,只输出最小的那组解。每组运算结果与其后一组运算结果之间没有任何空行,第一组运算结果前面以及最后一组运算结果后面也都没有任何空行。

个人总结

枚举第一艘船可能的所有距离(一共 100 种可能)

对于每一个距离,检查它是否能被第二艘和第三艘船的速度整除

如果能整除,再检查余数是否分别等于 b 和 c

#include <iostream> #include <vector> using namespace std; int main(){ long long a,b,c,d,e,f; while(cin>>a>>b>>c){ cin>>d>>e>>f; long long min_d=-1; // 用来存储找到的最小距离 for(int day1=0;day1<100;day1++){ //遍历第一艘船在100天内所有可能的距离 long long distance=(day1*24+a)*d; if(distance%e==0){ long long hours2=distance/e; if(hours2%24==b&&hours2<100*24){ if(distance%f==0){ long long hours3=distance/f; if(hours3%24==c&&hours3<100*24){ if(min_d==-1|| distance<min_d) min_d=distance; } } } } } cout<<min_d<<endl; } return 0; }

3.回文数

问题描述

有一天,明明在做数学作业的时候,发现了一组很有趣的数字。例如1、11、121、1331等等。他发现这些数字都是左右对称的,即不管你把这些数字从左读到右还是从右读到左,读出来的数字都是一样的。于是明明就把这个发现告诉了他爸爸。明明的爸爸是一名数学专家,他当然对这种类型的数字早有研究,他对明明说:“这些是回文数,它是一种特殊的数字现象,即这些数字的左右两边是对称的。例如:121左右两边对称,1331左右也是对称的。”明明觉得这很有趣,接着问他爸爸还有什么和这类回文数有关的好玩的东西,明明的爸爸于是就教了明明一种方法,这种方法是从任意一个整数出发,经过某种计算,就可以得到一个回文数。 这个方法如下: 例如首先给你一个数19,然后把它的最低位与最高位交换(如果还有更多位,则次低位与次高位交换......),得到它的逆序数91,然后两数相加,即19+91=110,我们得到110,因为110不是回文数,因此我们继续上面的步骤,110+11=121,现在我们就得到了一个回文数121。通过这种方法,我们就可以求得一个与某一个整数有关的回文数。 明明很聪明,很快就掌握了这个方法,但是他也发现了一个问题,就是有时候计算一个回文数,需要重复很多次以上的步骤,这使得明明很烦恼。于是他就求助于你,请你帮他写一个程序,通过程序来完成以上求回文数的过程。

明明的问题可以归结为:给你一个整数,通过上面叙述的求回文数的方法,求出回文数,并输出求解过程。输入数据保证该回文数小于2^31

输入说明

你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据,每组测试数据仅占一行,每行有一个整数n(10≤n≤10000),即要求回文数的那个整数。当n=0时,表示输入结束。每组测试数据与其后一组测试数据之间没有任何空行,第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。

输出说明

对于每一组测试数据,你写的程序要求计算出一组相应的运算结果,并将这一组运算结果作为你所写程序的输出数据依次写入到标准输出设备中。每组运算结果为一行或多行的回文数求解过程,直到求出回文数为止。每行的格式如下a+b=c,其中a是原来的数,b是a的交换后的那个数,c是a+b的结果,详细格式请参考输出样例。每组运算结果与其后一组运算结果之间没有任何空行,第一组运算结果前面以及最后一组运算结果后面也都没有任何空行。 注:通常,显示屏为标准输出设备。

个人总结

#include <iostream> using namespace std; //将数字逆序 int reverse(int n){ int reversed=0; while(n>0){ reversed=reversed*10+n%10; n/=10; } return reversed; } //判断是否为回文数 bool func(int num){ return num==reverse(num); } int main(){ int n; while(cin>>n){ if(n==0) break; int sum=n+reverse(n); cout<<n<<"+"<<reverse(n)<<"="<<sum<<endl; while(!func(sum)){ int newsum=sum+reverse(sum); cout<<sum<<"+"<<reverse(sum)<<"="<<newsum<<endl; sum=sum+reverse(sum); } } return 0; }

4.特殊四位数

问题描述

数学一直是明明很喜欢的一门学科,不但上课认真听讲,而且还自己钻研。有一次,老师在课上讲了一种特殊的四位整数,这种整数有两个特性:

第一,它是某一个自然数的平方;

第二,它的千位数字与十位数字之和等于百位数字与个位数字之积。

然后老师就举了一个例子:1156,1156是34的平方,且1156的千位数字1加上十位数字5等于百位数字1乘以个数数字6,即1+5=1*6。

然后老师告诉同学,这是最小的一个符合以上两个特性的四位整数,接着老师就留下了作业,要让同学们回家后尽量多的找出符合这两个特性的特殊四位数。明明回家后,就开始找了起来,1157、1158、1159、……、3136,直到到了3136(3136=56*56,3+3=1*6),明明才找到了第二个这样的特殊四位数。明明觉得这样找下去不是办法,后面还有好几千个数字要一个一个试下来,这样一定无法在睡觉前完成。于是明明就求助于你,帮他写一个程序,从小到大求出所有的这样的特殊四位数,然后当明明想要第几个这样的特殊四位数时,你就能够很快的告诉他。 如果把上述所有的特殊四位数按从小到大的顺序排列后记为S1,S2,…,Sn,…,即排在第1个位置上的特殊四位数记为S1,排在第2个位置上的特殊四位数记为S2,…,排在第n个位置上的特殊四位数记为Sn,那么明明的问题可以归结为:假如一个特殊四位数排在第n个位置上,那么这个特殊四位数Sn等于多少呢?

输入说明

你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据,每组测试数据仅占一行,每行仅有一个正整数n(n不大于特殊四位数的个数),表示要求第n个特殊四位数Sn。每组测试数据与其后一组测试数据之间没有任何空行,第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。

输出说明

对于每一组测试数据,你写的程序要求计算出一组相应的运算结果,并将这一组运算结果作为你所写程序的输出数据依次写入到标准输出设备中。每组运算结果为一个正整数,表示与输入数据n相对应的那个特殊四位数Sn,每组运算结果单独形成一行数据,其行首和行尾都没有任何空格,每组运算结果与其后一组运算结果之间没有任何空行,第一组运算结果前面以及最后一组运算结果后面也都没有任何空行。 注:通常,显示屏为标准输出设备。

个人总结

#include <iostream> #include <vector> #include <cmath> using namespace std; //判断是否为完全平方数 bool can_sqrt(int n){ int sqrt_n=(int)sqrt(n); return n==sqrt_n*sqrt_n; } //判断该数字千位数字与十位数字之和是否等于百位数字与个位数字之积 bool equal(int n){ int num1=(n/10)%10+n/1000; int num2=(n%10)*((n/100)%10); return num1==num2; } int main(){ int n; vector<int> result; for(int i=1000;i<=9999;i++){ if(can_sqrt(i)&&equal(i)) result.push_back(i); } while(cin>>n){ cout<<result[n-1]<<endl; } return 0; }

单词打卡

英语翻译

增强现实(AR)的一个典型应用方向,是对传单、杂志等印刷品进行内容增强。读过《哈利·波特》系列小说的读者都知道,《预言家日报》里的照片是如何“活起来”的。借助AR技术,这一构想可以成为现实——将数字视频与动画叠加在印刷模板的特定区域上。当人们通过电脑或智能手机查看这本杂志时,静态图片就会被动态画面或视频所取代。

Pictofit 是一款虚拟试衣间应用,用户可通过该应用预览线上时装店的服装穿在自己身上的效果。系统会自动调整服装尺寸,使其与用户体型相匹配。此外,应用还能估算出用户的身体围度数据,辅助填写购物相关信息。

Pictofit 可从线上购物网站提取服装图片,并将其渲染生成与用户本人照片相匹配的试穿效果。

http://www.jsqmd.com/news/474732/

相关文章:

  • DAMO-YOLO在工业机器人中的应用:智能分拣系统
  • React 颜色转换工具实战:从 HEX 到 CMYK 的全方位实现指南
  • 如何用3步搞定演唱会抢票?开源自动抢票工具全攻略
  • SRS4 实现海康威视GB28181协议推流与RTMP、WebRTC拉流全流程解析
  • Asian Beauty Z-Image Turbo效果实测:对“高级脸”“幼态脸”“大气骨相脸”三类风格支持
  • Magpie-LuckyDraw 3D抽奖工具入门指南:打造专业级活动体验
  • #第七届立创电赛# 基于国民技术MCU的电流表与多功能学习开发板设计(一)
  • 实战指南:基于快马平台生成端到端的图像分类项目,集成accelerate加速训练全流程
  • VLSI设计基石——CMOS反相器的性能建模与优化
  • Gemma-3 Pixel Studio应用场景:UI设计稿分析、PPT配图理解、海报文案生成
  • 解决AndroidX依赖冲突:appcompat-resources版本与compileSdkVersion不兼容问题
  • Dify评估系统上线前必须通过的5道生死关(含混淆矩阵偏差检测、judge模型漂移预警、评估链路可观测性埋点)
  • Magpie-LuckyDraw一站式3D抽奖解决方案:从部署到定制的全流程指南
  • LaTeX参考文献排版问题排查:特殊字符导致的缩进异常
  • Vue2与WebSocket实战:构建高效实时聊天室的全流程解析
  • 深入剖析CCPROXY溢出漏洞:从shellcode构造到远程控制实战
  • 5大场景适配:Magpie-LuckyDraw开源3D抽奖工具的全平台落地指南
  • 实战分享:用ollama embeddinggemma-300m构建电商客服话术匹配
  • 从零搭建局域网:eNSP模拟实验全流程解析
  • R 4.5部署危机预警(2024年Q3已触发17起CRAN包兼容性熔断):紧急绕过reticulate与future冲突的5种军工级方案
  • 【AI显卡训练】Manjaro系统下AMD RX 5700与ROCm的深度学习环境搭建与优化
  • CLIP ViT-H-14模型加载优化:内存映射+懒加载提升服务启动速度
  • 小白也能上手的LongCat-Image-Editn:星图平台部署到实战改图全流程
  • 从模型到极限:深入解析信道容量与香农公式
  • 绝了!个人微信终于能连“小龙虾”了,手机发条消息10分钟自动建站。
  • 逆向实战:从流量分析到文件提取的攻防技巧
  • 从仿真到合规:利用LTspice预演ISO 7637-2与ISO 16750-2的汽车电源瞬态测试
  • 5维突破帧率枷锁:genshin-fps-unlock工具全场景优化指南
  • AudioSeal详细步骤:模型缓存路径/root/audioseal/的磁盘空间管理策略
  • 造相-Z-Image部署教程:RTX 4090环境配置,极简UI快速上手