欢迎光临
我们一直在努力

编程题练习Day16+计算机英语翻译练习Day9

编程题练习

一、特殊四位数

章节: 一维数组

问题描述

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

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

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

然后老师就举了一个例子: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,每组运算结果单独形成一行数据,其行首和行尾都没有任何空格,每组运算结果与其后一组运算结果之间没有任何空行,第一组运算结果前面以及最后一组运算结果后面也都没有任何空行。 注:通常,显示屏为标准输出设备。

输入范例

1
2

输出范例

1156
3136

问题作答
完整代码

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

int main()
{
vector<int> total;
int n, square, g, s, b, q;
for(int i = 32; i < 100; i++){
square = i * i;
g = square % 10;
s = (square / 10) % 10;
b = (square / 100) % 10;
q = square / 1000;
if(q + s == b * g)
total.push_back(square);
}
while(cin >> n)
cout << total[n-1] << endl;
}

运行范例

个人总结

1.本题要寻找的四位数为平方数,31*31=961,32*32=1024,所以遍历范围为32-99的平方

2.对可能的四位数进行取余和除法得到个十百千位数,如果符合千位数字与十位数字之和等于百位数字与个位数字之积,存入数组中

二、最大值

章节: 一维数组

问题描述

为了培养明明对数学的热爱,明明的爸爸经常想出一些简单有趣且富有数学思想的游戏给明明玩。有一次,明明的爸爸在纸上写了N个数字,有正整数、负整数和0。明明的爸爸给明明一个范围,他可以选大于等于L1个且小于等于L2个的数字(L1≤L2),且这些数字必须是连续的。但是要求明明选出的数的和最大,这样说明明可能不太明白,于是明明爸爸就举了一个简单的例子。 例如有5个数字为“1”、“2”、“3”、“4”、“5”,明明可以选择大于等于1个且小于等于2个的数字,也就是说明明可以选择1个数字,或者连续的2个数字。通过观察数字串,最后我们会选2个数字,4和5,他们的和最大,为9。 明明明白爸爸的意思后,就开始玩起游戏来。但是他发现,这个游戏看似简单,其实还是有相当的难度,因为数字越多,选择数字个数范围越大,则题目越难,到后面明明有些不想玩了。于是明明就求助于你,请你帮他写一个程序,来求出和的最大值。 明明的问题可以归结为:有N个数字,从中选择出连续的M(L1≤M≤L2)个数,求出它们之和的最大值。

输入说明

你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据,每组测试数据有两行,每组测试数据的第一行有三个整数N(0<N≤20)、L1、L2(0<L1≤L2≤N),N表示数字串中有多少个整数,L1、L2表示可选数字个数的范围,每组测试数据的第二行有N个整数,整数大小的绝对值都小于等于100,整数之间用一个空格隔开。每组测试数据与其后一组测试数据之间没有任何空行,第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。

输出说明

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

输入范例

4 1 2
-1 0 1 2
5 1 2
-1 -2 -3 -4 -5

输出范例

3
-1

问题作答
完整代码

#include <iostream>
using namespace std;

void max(int n, int l1, int l2)
{
int total[n+1];
int max = 0;
for(int i = 1; i <= n; i++)
cin >> total[i];
for(int i = 1; i <= l1; i++)
max += total[i];
for(int i = 0; i <= l2 – l1; i++){
int m = l1 + i;
for(int k = 1; k <= n – m + 1; k++){
int sum = 0;
for(int j = k; j <= k + m – 1; j++)
sum += total[j];
if(sum > max)
max = sum;
}
}
cout << max << endl;
}

int main()
{
int n, l1, l2;
while(cin >> n >> l1 >> l2)
max(n,l1,l2);
}

运行范例

个人总结

1.本题要求计算数组中最大子数组和(子数组的大小在l1-l2之间)

2.注意子数组起始索引从 k开始、长度为 m时,最后一个元素的索引是 k + m – 1,必须满足 k + m – 1 <= n,因此 k的最大值应为n – m + 1

3.最内层循环变量 j(元素索引)的终止条件应该是 j <= k + m – 1,因为索引从 k到 k + m – 1,一共包含m个元素

三、数列1

章节: 一维数组

问题描述

思维的严密性是相当重要的,尤其是在程序设计中,一个小小的错误,就可能导致无法想象的后果。明明的爸爸是一名富有经验的程序设计专家,深知思维严密的重要性。于是在明明很小的时候,就通过游戏的方式训练明明的思维严密性。今天,明明的爸爸和明明做了一个数列的游戏。

这个游戏很简单,就是有一数列,现在需要在数列中选出一个或者连续若干个数,要求这些数的和能被11整除。明明的爸爸想锻炼明明思维的严密性,因此要求明明尽可能多的找出符合条件的数列来,最好一个也不要漏掉。 例如有一数列为“11 22 33”,其中11可以被11整除,22可以被11整除,33可以被11整除,11+22=33能被11整除,22+33=55能被11整除,11+22+33=66能被11整除。所以以上一数列能被11整除的情况一共有六种。(注:虽然11+33也能被11整除,但是11和33在数列中没有连续出现,因此不算一种合理的情况。) 明明对这个游戏很感兴趣,高兴地玩了起来。由于粗心,明明总是无法一次就把所有的情况都找出来,这使得他爸爸不是很满意。于是明明爸爸决定先降低游戏的难度,事先告诉明明某一数列总共有多少种符合条件的选择数的方法,然后再让明明去选。明明的爸爸请你帮一个忙,他不想自己找出所有的情况,因此请你写一个程序,用程序来找出一共有多少种符合选数的情况,并把结果告诉他。 明明爸爸的问题可以归结为:给你一个数列,从中选出1个或连续若干个数,要求这些数的和能被11整除,问这样的选数方法一共有多少种。

输入说明

你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据,每组测试数据有两行,每组测试数据的第一行有一个整数n(0<n≤50),表示数字串中有多少个整数,每组测试数据的第二行有n个整数,整数大于等于0且小于等于100,整数之间用一个空格隔开。每组测试数据与其后一组测试数据之间没有任何空行,第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。

输出说明

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

输入范例

10
1 1 1 1 1 1 1 1 1 1
2
11 22

输出范例

0
3

问题作答
完整代码

#include <iostream>
using namespace std;

void sequence(int n)
{
int arr[n];
for(int i = 0; i < n; i++)
cin >> arr[i];
int count = 0;
for (int len = 1; len <= n; len++) {
for (int start = 0; start + len <= n; start++) {
int sum = 0;
for (int k = start; k < start + len; k++) {
sum += arr[k];
}
if (sum % 11 == 0) {
count++;
}
}
}
cout << count << endl;
}

int main()
{
int n;
while(cin >> n)
sequence(n);
}

运行范例

个人总结

1.本题与上题类似,可遍历每一种子数组情况,如果子数组和为11的倍数,则计数加一

翻译练习

第一段
原文

译文

图 12B-1:AR 在人类用户和计算机系统之间使用反馈回路。用户观察 AR 显示并控制视图。系统跟踪用户视图,将真实世界中的姿势与虚拟内容注册,并呈现定位可视化。

第二段
原文

译文

在本部分中,我们通过研究几个例子来继续探索AR,这些例子展示了AR技术和技术的应用。除了以下例子之外,还有许多其他具体的应用可能性,例如AR在工业和建筑、手术、导航和游戏中的应用。

第三段
原文

译文

理解事物的工作原理,并学习如何组装、拆卸或修理它们,是许多职业面临的重大挑战。维修工程师经常花费大量时间研究手册和文献,因为通常不可能记住所有程序的细节。然而,AR可以直接在工人的视野中呈现说明。这可以提供更有效的培训,但更重要的是,它允许受过较少培训的人员正确地执行工作。

单词练习

赞(0)
未经允许不得转载:171主机测评 » 编程题练习Day16+计算机英语翻译练习Day9
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址