问题1:

        明明是一名公安局的谈判专家,专门负责和绑匪谈判。有一次,明明接到一个特殊的任务,他赶到了案发现场,发现有k个绑匪绑架了k个人质,于是明明就开始和绑匪进行谈判。绑匪提出了一个非常特殊的要求,如果明明能够回答出这个问题,那绑匪将释放所有的人质;否则,绑匪就要撕票。 绑匪的问题是这样:绑匪把人质和自己围成一个圈,把人质从1开始编号,一直编到k,然后绑匪自己从k+1开始编号,一直编到2k。现在从编号1开始,每次从其中选出第m个人(隔m-1选出一个人)出列,然后绑匪要求明明选定这个m值,且m值要尽量的小,使得最先出列的k个人都是绑匪。 例如:有3个坏人和3个人质,他们排成一圈,其中编号1到3的为人质,编号4到6的为坏人,如下: 1、2、3、4、5、6; 明明要选定m=5时,能够满足绑匪的要求。因为: 第一轮,从1开始数,编号5出列,剩下的人为: 1、2、3、4、6; 第二轮,从6开始数,编号4出列,剩下的人为: 1、2、3、6; 第三轮,从6开始数,编号6出列,剩下的人为: 1、2、3; 这样所有的绑匪都先出列,明明可以成功地救出所有的人质。 如果明明能够找到这个m值,那么所有的人质都想获救,否则的话,后果不堪设想。明明意识到了问题的严重,这个问题对他来说十分地棘手。于是明明想到了你,你是一名程序设计专家,明明想让你用程序来解这个问题,救出所有的人质。 明明的问题可以归结为:假设有k个人质和k个绑匪围成一圈。人质的编号从1到k,绑匪的编号从k+1到2k。从编号1开始,每次从其中选出第m个人(隔m-1选出一人)出列。希望求出m的最小值,使得最先出列的k个人都是绑匪,即都是编号从k+1到2k的人。(约瑟夫环2)

输入、输出要求:

        你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据,每组测试数据仅一行,每组测试数据有一个整数k(1≤k≤10),表示人质的人数和绑匪的人数。每组测试数据与其后一组测试数据之间没有任何空行,第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。

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

输入输出示例:

个人总结:

        1.本题是算法入门的经典题目改变题,我采用是算法老师当时讲解的使用动态数组进行操作;

        2.

实现代码如下示

#include <iostream>
#include <vector>
#include <cstdio>
using namespace std;
bool check(int k, int m) {
    vector<int> circle;
    for (int i = 1; i <= 2 * k; ++i) {
        circle.push_back(i);
    }
    int start = 0;
    for (int i = 0; i < k; ++i) {
        int sz = circle.size();
        int idx = (start + m - 1) % sz;
        if (circle[idx] <= k) {
            return false;
        }
        circle.erase(circle.begin() + idx);
        start = idx % circle.size();
    }
    return true;
}

int find_m(int k) {
    for (int m = 1; ; ++m) {
        if (check(k, m)) {
            return m;
        }
    }
}

int main() {
    int ans[11] = {0};
    for (int k = 1; k <= 10; ++k) {
        ans[k] = find_m(k);
    }

    int k;
    while (scanf("%d", &k) == 1) {
        printf("%d\n", ans[k]);
    }
    return 0;
}

 问题2:     

        一个整数,只知道前几位为a,不知道末二位,被另一个整数b除尽了,那么该数的末二位该是什么呢?(整除的尾数)        

输入、输出要求:

        第一行为T,以下T行,每行为一组测试数据,包含两个整数a,b(0<a<10000, 10<b<100)。

        对应每组数据,将满足条件的所有尾数在一行内输出,格式见范例。同组数据的输出,其每个尾数之间空一格,行首与行尾没有空格。

输入输出示例:

个人总结:

        1.本题相对简单,暴力破解即可;

实现代码如下示

#include <stdio.h>
int main() {
    int T;
    scanf("%d",&T);
    for(int i=1;i<=T;i++){
        int a,b,a1;
        int first_case = 1;
        scanf("%d %d",&a,&b);
        a1=a*100;
        for(int j=0;j<100;j++){
            if((a1+j)%b==0){
               if(first_case != 1){
                    printf(" "); 
               }
                printf("%02d",j);
                first_case = 0;
            }
        }
        printf("\n");
    }
    return 0;
}

 问题3:   

        因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 号是回文质数。写一个程序来找出范围[a,b](5<= a < b <= 100,000)间的所有回文质数(回文质数)
输入、输出要求:

        仅 1 行: 二个整数 a 和 b(5<= a < b <= 100,000)。 

        输出一个回文质数的列表,一行一个。每行首尾无空格,最后无空行。

输入输出示例:

个人总结:

        1.本题使用isPr函数判断质数,而回文数字判断通过将数字逆置后再与原数字对比;

实现代码如下示

#include <stdio.h>
#include <math.h>
int isPr(int i) {
    if (i < 2) return 0;
    if (i == 2 || i == 3) return 1;
    if (i % 2 == 0 || i % 3 == 0) return 0;
    for (int j = 5; j * j <= i; j += 6) {
        if (i % j == 0 || i % (j + 2) == 0) {
            return 0;
        }
    }
    return 1;
}
int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    for (int i = a; i <= b; i++) {
        if (isPr(i)) {
            int x = i;
            int y = 0;
            while (x > 0) {
                y = y * 10 + x % 10;
                x /= 10;
            }
            if(i==y)
            printf("%d\n", i);
        }
    }
    return 0;
}

专业TOPIC翻译打卡:

译文:

P1        人工智能是计算机科学领域的一个分支,目的在于为了构建一个自动化机器——就是无人为干预下处理复杂问题的机器。这个目标的完成需要机器具备感知和推理能力。虽然这些能力在人类生来就有的常识性活动范围内,但历史的实践证明让机器具备着这些能力是困难的。这也是该领域工作一直以来都充满挑战的原因。

P2        人工智能领域的范围相当广泛,并与心理学、神经学、数学、语言学、电气工程及机械工程等领域相融合。为了聚焦我们的讨论,我们先从 “智能体” 的概念,以及主体可能表现出的智能行为类型入手。事实上,人工智能领域的大部分研究都可以按照智能体的行为来分类。

P3        智能体是一种能对来自环境的刺激做出响应的 “装置”。人们通常很自然地会把智能体想象成机器人这类独立的机器,但智能体也可以有其他形式,比如自动飞行器、互动电子游戏中的角色,或是通过互联网与其他进程通信的程序(可能作为客户端、服务器或对等端)。大多数智能体都配备有传感器来接收环境数据,以及执行器来影响它们所处的环境。传感器的例子包括麦克风、摄像头、测距传感器,以及空气或土壤采样设备。执行器的例子包括轮子、腿、翅膀、机械爪和语音合成器。

原文:

        Artificial intelligence is the field of computer science that seeks to build autonomous machines—machines that can carry out complex tasks without human intervention. This goal requires that machines be able to perceive and reason. Such capabilities fall within the category of common sense activities that, although natural for the human mind, have historically proven difficult for machines. The result is that work in the field continues to be challenging.

 

        The field of artificial intelligence is quite large and merges with other subjects such as psychology, neurology, mathematics, linguistics, and electrical and mechanical engineering. To focus our thoughts, then, we begin by considering the concept of an agent and the types of intelligent behavior that an agent might exhibit. Indeed, much of the research in artificial intelligence can be categorized in terms of an agent's behavior.

        An agent is a "device" that responds to stimuli from its environment. It is natural to envision an agent as an individual machine such as a robot, although an agent may take other forms such as an autonomous airplane, a character in an interactive video game, or a process communicating with other processes over the Internet (perhaps as a client, a server, or a peer). Most agents have sensors by which they receive data from their environments and actuators by which they can affect their environments. Examples of sensors include microphones, cameras, range sensors, and air or soil sampling devices. Examples of actuators include wheels, legs, wings, grippers, and speech synthesizers.

专业名词:

autonomous machines 自主机器

intelligent agents 智能主体(智能代理)

sensors 传感器

actuators 执行器

range sensors 测距传感器

speech synthesizers 语音合成器

neurology 神经学

grippers  机械爪(机器人领域专用)

peer  对等节点(网络通信中 “对等端” 的意思,区别于 “同伴”)

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐