复试打卡day13
此外,还会估算身体尺寸并予以提供,以帮助录入购买数据。起点为8,即加上索引为8和9对应的数,如果起点为9,那么加上即加上索引为9和10对应的数,索引10,超出数组范围了。后面问了ai,先用double存一个正整数的平方根,再将这个double转为整形,两两相乘,若等于原来的数,则证明该数有平方根。比如当要求相加的个数为2时,有10个数,vec数组索引分别为0-9,起点为0时,即加上索引为0和1 对
1.单词

2.翻译
增强现实技术的一个明显应用方向是用于对印刷材料(如传单或杂志)进行增强。读过《哈利。波特》系列小说的人都知道,《每日预言报》上的图片是如何变得栩栩如生的。这一理念通过增强现实技术可以实现,具体做法是在印刷模板的特定区域上叠加数字影片和动画。当人们在电脑或智能手机上查看这本杂志时,静态图片将被动态序列或影片所取代。 增强现实技术还可对销售人员起到帮助作用,他们正努力展示一款产品的优点。尤其是对于复杂设备而言,仅用语言描述其内部运作机制可能较为困难。让潜在客户亲眼目睹其生动的内部构造,往往能产生更为强烈的吸引力 在贸易展和展厅中展示。 Pictofit1是一款虚拟试衣间应用,使用户能够预览来自在线时尚店铺或自己身体上的服装款式(图12B-4)。这些服装会自动调整以适应穿戴者的尺寸。此外,还会估算身体尺寸并予以提供,以帮助录入购买数据。
3.代码
45.回文数
#include<bits/stdc++.h>
using namespace std;
long long getreverse(long long n)
{
long long rev=0;
long long temp=n;
while(temp>0)
{
rev=rev*10+temp%10;
temp=temp/10;
}
return rev;
}
bool ishuiwen(long long n)
{
return n==getreverse(n);
}
int main()
{
long long n;
while(cin>>n)
{
if(n==0) return 0;
bool flag=false;
long long current=n;
while(!flag)
{
long long re_current=getreverse(current);
long long sum=current+re_current;
cout<<current<<"+"<<re_current<<"="<<sum<<endl;
flag=ishuiwen(sum);
current=sum;
}
}
return 0;
}
输入数据保证该回文数小于2^31,题目要求输入小于2的31次方,为了防止相加后溢出,统一设成long long型
求回文,不一定要用字符串反转,有点复杂。
可以rev=rev*10+temp%10;
temp=temp/10;这样
46.特殊四位数
#include<bits/stdc++.h>
using namespace std;
bool is_havesquare(int n)
{
double a=sqrt(n);
int temp=round(a);
return (temp*temp==n);
}
bool is_right(int n)
{
int qian=n/1000;
int bai=(n-qian*1000)/100;
int shi=(n-qian*1000-bai*100)/10;
int ge=(n-qian*1000-bai*100-shi*10);
return (qian+shi==bai*ge);
}
int main()
{
int n;
while(cin>>n)
{
int count=0;
for(int i=1156;;i++)
{
if(is_havesquare(i)==true)
{
if(is_right(i)==true)
{
count++;
if(count==n)
{
cout<<i<<endl;
break;}
}
}
}
}
return 0;
}
主要卡壳在判断一个数是否有平方根
后面问了ai,先用double存一个正整数的平方根,再将这个double转为整形,两两相乘,若等于原来的数,则证明该数有平方根
double a=sqrt(n);
int temp=round(a);round,它将一个浮点数(float, double, long double)转换为最接近的整数。如果小数部分 == 0.5(即恰好在两个整数中间),C++11 标准规定向远离零的方向取整(即正数向上,负数向下)。
return (temp*temp==n);
47.最大值
#include<bits/stdc++.h>
using namespace std;
int main()
{
int N,L1,L2;
while(cin>>N>>L1>>L2)
{
vector<int> vec(N);
for(int i=0;i<N;i++)
cin>>vec[i];
int max_sum=INT_MIN;
for(int len=L1;len<=L2;len++)
{
for(int start=0;start<=N-len;start++)
{
int current_sum=0;
for(int k=0;k<len;k++)
current_sum=current_sum+vec[start+k];
if(current_sum>max_sum)
max_sum=current_sum;
}
}
cout<<max_sum<<endl;
}
return 0;
}
因为要求是连续的数字,所以不能先用sort排好序,依次取末尾的数,求最大值,会打断前后状态。
所以使用暴力解
第一层for循环确认好,长度len是从L1到L2;
第二层for循环确认好,起点位置start,当要求的个数为len时,起点最多从0到N-len;
比如当要求相加的个数为2时,有10个数,vec数组索引分别为0-9,起点为0时,即加上索引为0和1 对应的数
起点为8,即加上索引为8和9对应的数,如果起点为9,那么加上即加上索引为9和10对应的数,索引10,超出数组范围了。所以起点最多从0到N-L1;
第三层for循环,即将数字加起来
for(int k=0;k<len;k++)
current_sum=current_sum+vec[start+k];
起始位置为start为0时,要求相加个数为2,也就是len为2.加上vec[0],再加上vec[0+1]即vec[1]
更多推荐


所有评论(0)