题目37:黑色星期五

问题描述

13号又是星期五是一个不寻常的日子吗? 13号在星期五比在其他日少吗?为了回答这个问题,写一个程序来计算在n年里13 日落在星期一,星期二......星期日的次数.这个测试从1900年1月1日到 1900+n-1年12月31日.n是一个非负数且不大于400.

这里有一些你要知道的: 1900年1月1日是星期一. 4,6,11和9月有30天.其他月份除了2月都有31天.闰年2月有29天,平年2月有28天.

输入说明

一个整数n(1<= n <= 400).

输出说明

七个在一行且相分开的整数,它们代表13日是星期六,星期日,星期一.....星期五的次数.

输入范例

20

输出范例

36 33 34 33 35 35 34

个人总结
1.days % 7取值为0 - 6,可以通过if-else语句将范围修改为1-7
2.注意本题结果的输出顺序
3.fun(n, week) 等价于 fun(n, &week[0]),二者传递的都是数组的内存地址,效果完全一致。
代码
#include <iostream>
#include <cstdio>
using namespace std;

int month[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
bool RunNian(int y)
{
	if(y % 4 == 0 && y % 100 != 0 || y % 400 == 0)	return 1;
	else	return 0;
}

int fun(int n, int week[])
{
	int day = 0;
	for(int y = 1900; y < 1900 + n; y ++)
	{
		if(RunNian(y))	month[2] = 29;
		else	month[2] = 28;
		for(int m = 1; m <= 12; m ++)
		{
			int days = day + 13;
			if(days % 7 == 0)	week[7] ++;
			else	week[days % 7] ++;
			day += month[m];
		}
	}
}

int main() 
{
	int n;
	cin >> n;
	int week[8] = {0};
	fun(n, week);
	cout << week[6] << ' ' << week[7];
	for(int i = 1; i <= 5; i ++)
	{
		cout << ' ' << week[i];
	}
	return 0;
}


题目38:树

问题描述

明明是一家地铁建设公司的职员,他负责地铁线路的规划和设计。一次,明明要在一条长L的马路上建造若干个地铁车站。

这条马路有一个特点,马路上种了一排树,每两棵相邻的树之间的间隔都是一米。

如果把马路看成一个数轴,马路的一端在数轴0的位置,马路的另一端在L的位置,那么这些树都种在数轴的整数点上,即0,1,2,…,L上都种有一棵树。

由于要设计建造地铁站的缘故,所以需要把一些树移走,明明为了移树的方便,把地铁站的区域也建在了数轴上两个整数点之间,由于有多条地铁线路,地铁车站的区域可能会有部分的重合(重合的区域明明将来会设计成一个大型的车站,移树的时候不必考虑地铁站重合区域的问题)。

现在明明想请你帮一个忙,他把车站区域的位置告诉你,即告诉你数轴上的两个整数点,在这两个整数点之间是车站的区域,请你写一个程序,计算出把所有车站区域两点之间的树移走以后,这条马路上还剩多少棵树。

例如:马路长为10,要建造2个地铁车站,车站的区域分别是2到5和3到6,原先的马路上一共有11棵树,在2到5的位置上建车站后,需要移走4棵树,在3到6的位置上建车站后,也需要移走4棵树,但是3到6这个区域和2到5这个区域有部分重合,所以只需移走1棵树即可,这样总共移走的树是5棵,剩下的树就是6棵。

明明的问题可以归结为:给你一条马路的长度和若干个车站的位置,请你用程序计算出把树移走后,马路上还剩多少棵树。

输入说明

你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据,每组测试数据有多行,每组测试数据的第一行有两个整数L(1≤L≤10000)和M(0≤M≤100),分别表示马路的长度和地铁车站区域的个数。接下来有M行,每行有2个整数,分别表示每一座地铁车站区域的两个坐标的。每组测试数据与其后一组测试数据之间没有任何空行,第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。

输出说明

对于每一组测试数据,你写的程序要求计算出一组相应的运算结果,并将每组运算结果作为你所写程序的输出数据依次写入到标准输出设备中。每组运算结果为一个整数,即把树移走后,马路上还剩下多少棵树。每组运算结果单独占一行,其行首和行尾都没有任何空格或其他任何字符,每组运算结果与其后一组运算结果之间没有任何空行或其他任何字符,第一组运算结果前面以及最后一组运算结果后面也都没有任何空行或其他任何字符。 注:通常,显示屏为标准输出设备。

输入范例

5 1
1 2
10 2
2 5
3 6

输出范例

4
6

个人总结

1.C++ 标准(C++11 及以上)明确禁止用变量作为数组长度定义静态数组(即int tree[变量]这种写法);
int tree[l + 1] = {0};会导致编译错误

代码
#include <iostream>
#include <cstdio>
using namespace std;

int main() 
{
	int l, m;
	int flag = 0;
	while(cin >> l >> m)
	{
		int tree[10001] = {0};
		int cnt = 0;
		while(m --)
		{
			int start, end;
			cin >> start >> end;
			for(int i = start; i <= end; i ++)
			{
				tree[i] = 1;
			}
		}
		for(int i = 0; i <= l; i ++)
		{
			if(tree[i] == 0)	cnt ++;
		}
		if(flag)	cout << endl;
		cout << cnt;
		flag = 1;
	}
	
	return 0;
}

题目39:约瑟夫环

问题描述

有一次,明明的公司举行忘年会。忘年会的高潮部分是最后的抽大奖环节。公司为了增加活动的气氛,并没有按传统的抽奖方式来抽,而是进行了一个游戏:逐步逐步地淘汰人,而最后剩下的人,将会得到大奖。

这个游戏的方式如下:首先公司的全部职员围成一个圈,然后确定一个淘汰数X,接着就从其中的一个人开始,从1数数,当数到X时,那个人就被淘汰出局,接着下一个人再从1开始数数,一直这样重复下去,直到剩下最后一个人,那个人就是最后的大奖得主。

例如,公司有5个人,淘汰数定为2,则一开始五个人排成一圈,依次编号为:1、2、3、4、5; 首先从编号1的人开始数数,数到2后,编号2淘汰,这样只剩下4个人:1、3、4、5; 接着从编号3的人开始数,数到2后,编号4淘汰,这样只剩下3个人:1,3、5; 接着从编号5的人开始数,数到2后,编号1淘汰,这样只剩下2个人:3、5; 最后从编号为3的人开始数,数到2后,编号5淘汰,最后编号为3的那个人就获得了最终的大奖。 (注:以上的淘汰顺序为2 4 1 5 3。)

由于明明的运气十分地差,最后第二个被淘汰,与大奖失之交臂,十分郁闷。他想知道自己被淘汰的全过程,于是他想请你帮个忙,帮他写一个程序,明明把他公司的人数告诉你,并且把那个淘汰数也告诉你,你的程序能够根据这两个数计算出淘汰人的具体顺序,即把淘汰人的编号按顺序输出。

明明的问题可以归结为:给你一个公司的人数N和一个淘汰数X,你的程序模拟上面描述的淘汰方式,输出淘汰人的编号顺序。

输入说明

你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据,每组测试数据仅一行,每组测试数据有两个整数N(1<N<100)和X(0<X<10),N表示公司的人数,X表示淘汰数,两个整数用一个空格隔开。每组测试数据与其后一组测试数据之间没有任何空行,第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。

输出说明

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

输入范例

5 2
5 6
99 1

输出范例

2 4 1 5 3
1 3 2 5 4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99

个人总结
同题目22.约瑟夫环2
方法一(vector容器)
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;

int main() 
{
	int n, x;
	int f1 = 0;
	while(cin >> n >> x)
	{
		vector<int> a;
		int f2 = 0;
		if(f1)	cout << endl;
		f1 = 1;
		for(int i = 1; i <= n; i ++)
		{
			a.push_back(i);
		}
		int alive = n;//未出局人数
		int pos = 0;//-当前索引
		for(int i = 0; i < n; i ++)//前k次出局
		{
			int del = (pos + x - 1) % alive;//本轮出局的索引
			if(f2)	cout << ' ';
			cout << a[del];
			f2 = 1;
			a.erase(a.begin() + del);//移除本轮出局者
			alive --;//未出局人数减一
			if(alive > 0)	pos = del % alive;//下一轮索引的位置
		}

	}
	return 0;
}
方法二(数组)
 #include <iostream>
 #include<cstdio>

 using namespace std;

 int main()
 {
     int n;//总人数
     int x;//淘汰数
     while(cin >> n >> x)
     {
         int live[100] = {0};
         int count = 0;//已经出局的人数
         int i = 0;//报的数
         int cur = 0;//数组当前索引
         int flag = 0;
         while( count < n )
         {
             cur ++;
             if( live[cur] == 0)//未被淘汰
             {
                 i ++;//报数
                 if( i == x )//淘汰
                 {
                     if( flag == 0 )
                     {
                         cout << cur;
                         flag = 1;
                     }
                     else
                     {
                         cout << " " << cur;
                     }
                     live[cur] = 1;//出局标记
                     i = 0;//报数重置
                     count ++;//已淘汰人数+1
                 }
             }
             if( cur == n )  cur = 0;//环重置索引
         }
         cout << endl;
     }
     return 0;
 }

英语翻译

        More recent examples of Turing test "successes" include Internet viruses that carry on "intelligent" dialogs with a human victim in order to trick the human into dropping his or her malware guard. Moreover, phenomena similar to Turing tests occur in the context of computer games such as chess-playing programs. Although these programs select moves merely by applying brute-force techniques, humans competing against the computer often experience the sensation that the machine possesses creativity and even a personality. Similar sensations occur in robotics where machines have been built with physical attributes that project intelligent characteristics. Examples include toy robot dogs that project adorable personalities merely by tilting their heads or lifting their ears in response to a sound.

        最近图灵测试“成功”的案例中包括一些互联网病毒,它们为了诱骗人们放松对恶意软件的防护与人们进行“智能的”对话。此外,与图灵测试相似的现象也出现例如象棋游戏程序的电脑游戏场景中。尽管这些程序通过应用暴力算法技术来搜索(象棋)走法,与计算机对弈的人们总是会经历机器拥有创造力甚至是个性的感觉。类似的感觉也出现在被赋予能展现智能特征的物理属性机器人科学。案例中就包括能展现可爱个性的机器玩具狗仅仅通过歪头或者竖起耳朵来回应声音。

brute /bruːt/ a. 粗暴的;野蛮的

sensation /sen'sei∫ən/ n. 感觉;轰动;激动

adorable /ə'dɔːrəbəl/ a. 值得崇拜的;可爱的

tilt /tilt/ v.(使)倾斜,(使)倾侧

Section B单词总结:

challenging /'t∫ælinʤiŋ/ a. 挑战性的

intelligent agent 智能代理,智能主体

neurology /ˌnjuə'rɔləʤi/ n. 神经病学;神经学

stimulus /'stimjuləs/([复]-li /-lai/ 或 -luses) n. 刺激(物),激励(物)

actuator /'æktjueitə/ n. 执行器,执行机构;致动器

range sensor 距离传感器

gripper /'ɡripə/ n. 夹子;抓爪(器)

synthesizer /'sinθisaizə/ n. 合成器

speech synthesizer 语音合成器

reflex /'riːfleks/ n. 反射(作用);(对刺激的)本能反应

reflex action 反射作用;本能反应;本能动作

empower /im'pauə/ v. 授权给;使能够

maneuver /mə'nuːvə/ v.〈美〉调动;机动;移动

passageway /'pæsiʤwei/ n. 走廊;通道

trial-and-error /'traiələnd'erə/ a. 试错法的;反复试验的

checkers /'t∫ekəz/ n.〈美〉西洋跳棋

gyroscope /'ʤaiərəskəup/ n. 陀螺仪,回转仪

toehold /'təuhəuld/ n.(攀登悬崖等时脚趾大小的)立足点,支点

dichotomy /dai'kɔtəmi/ n. 一分成二;二分法

simulation /ˌsimju'leiən/ n. 模拟,仿真

linguist /'liŋɡwist/ n. 语言学家

pursuit /pə'sjuːt/ n. 追求;追赶

connotation /ˌkɔnəu'tei∫ən/ n. 内涵(意义),含义

plagiarism /'pleiʤiərizəm/ n. 剽窃,抄袭

aesthetical /iːs'θetikəl/ a. 美学的;审美的

theoretician /ˌθiəri'ti∫ən/ n. 理论家

Turing test 图灵测试

benchmark /'bent∫mɑːk/ n. 基准

folklore /'fəuklɔː/ n. 民间传说;民俗(学)

interrogator /in'terəuɡeitə/ n. 讯问者;审问者

eerie /'iəri; 'iri/ a.(因怪诞或阴森而)引起恐惧的;怪异的

restructure /riː'strʌkt∫ə/ v. 重建;改组;调整

psychotherapy /ˌsaikəu'θerəpi/ n. 心理疗法,心理治疗

dismay /dis'mei/ n. 失望;气馁;惊愕

thesis /'θiːsis/ ([复]-ses /-siːz/) n. 命题;论点;(学位)论文

therapeutic /ˌθerə'pjuːtik/ a. 治疗的;有疗效的

therapist /'θerəpist/ n.(特定治疗法的)治疗专家

subservient /səb'səːviənt/ a. 屈从的;恭顺的;顺从的

brute /bruːt/ a. 粗暴的;野蛮的

sensation /sen'sei∫ən/ n. 感觉;轰动;激动

adorable /ə'dɔːrəbəl/ a. 值得崇拜的;可爱的

tilt /tilt/ v.(使)倾斜,(使)倾侧

Section B

 Augmented Reality and Its Applications增强现实技术及其应用

I. Introduction简介

        Virtual reality (VR) is becoming increasingly popular, as computer graphics have progressed to a point where the images are often indistinguishable from the real world. However, the computer-generated images presented in games, movies, and other media are detached from our physical surroundings. This is both a virtue—everything becomes possible—and a limitation. The limitation comes from the main interest we have in our daily life, which is not directed toward some virtual world, but rather toward the real world surrounding us.

        虚拟现实技术正在变得越来越流行,计算机图形学已经发展到图像与真实世界相比往往难以分辨的程度。然而,游戏,电影以及其他媒体出现的计算机生成的图片脱离了我们的物理环境。这既是让以前变为可能的优势,也是一种局限。这一局限来源于我们日常生活中的的主要兴趣,并非指向虚拟世界,而是我们周围的现实世界。

augment /ɔːɡ'ment/ v. 增强;增加;扩大

augmented reality 增强现实

indistinguishable /ˌindis'tiŋɡwi∫əbəl/ a. 难以区别的,难以分辨的

detach /di'tæt∫/ v. 拆卸;使分开;使分离

        In many ways, enhancing mobile computing so that the association with the real world happens automatically seems an attractive proposition. Augmented reality (AR) holds the promise of creating direct, automatic, and actionable links between the physical world and electronic information. It provides a simple and immediate user interface to an electronically enhanced physical world. AR can overlay computer-generated information on views of the real world, amplifying human perception and cognition in remarkable new ways.

        在许多方面来看,增强移动计算以至于自动地关联现实世界发生的事似乎是个具有吸引力的提议。增强现实技术有望在物理世界和电子信息之间建立直接的、自动地可操作的连接。它为电子技术增强的物理世界提供了一个简洁而即时的用户界面。增强现实技术可以将计算机生成的信息叠加在现实世界的视觉画面之上,以不同寻常的新方法增强人们的认知和感知

proposition /ˌprɔpə'zi∫ən/ n. 提议,建议

overlay /ˌəuvə'lei/ v. 置(一物)于他物之上;在…上覆盖

amplify /'æmplifai/ v. 放大;增强;扩大

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐