41.环

问题描述

明明喜欢玩游戏,而明明的爸爸也乐意陪明明玩各种各样的小游戏。但是在游戏中,明明的爸爸又十分注意培养明明的智力,他希望通过游戏,不仅能让明明得到快乐,而且又能让明明学到一些知识,锻炼他的思维能力,为将来的发展打下基础。

一天,明明的爸爸和明明做起了一个叫“环”的游戏。游戏的内容很简单但却很有趣,就是有1到9九个整数,他们以任意的顺序排列成一个圆环,然后要在这个圆环中剪一刀,再分别按顺时针和逆时针次序排列成两个九位数。现在的要求是,得到的这两个九位数差的绝对值能被396整除,问一共有几种剪环的方法。 例如九个数的排列为:1、2、3、4、5、6、7、8、9,在1和9之间剪一刀(注意:因为是一个环,所以1和9是相邻的。),顺时针形成的数为:123456789,逆时针形成的数为:987654321,这两个数的差的绝对值为:864197532,这个数能被396整除,因此这是一种符合规则的剪法,更奇妙的是,这也是这种排序方式的唯一剪法。

明明显然对这个游戏非常感兴趣,高兴地做起来。但是玩了几次后,明明发现这个游戏又并不是那么容易了,因为对于这九个数来说,虽然一共只有九种剪法,但是每种方法都要试,且还要做加法再做除法,他觉得非常的麻烦,玩着玩着就失去了兴趣。明明的爸爸发现了这个问题,于是就找到了你,他请你来帮明明一把,写一个程序,计算出某个排序中符合条件的剪法共有几种,这样的话可以大大鼓励明明玩游戏的兴致。

明明爸爸的问题可以归结为:将1至9这九个数字,以任意顺序排成一个环,请在某两个数字之间剪开,分别按顺时针和逆时针次序排列成两个九位数,要求剪开后所得到的这两个九位数的差能被396整除,问共有几种剪法?

个人总结

首先把输入的9个数字存入数组中方便处理,对于每组测试数据,都有9种剪法,全部枚举出来判断即可。每次从i处剪开,顺时针顺序为i+1,i+2,...;逆时针顺序为i,i-1,i-2,...。只需注意处理k的值确保取值是一个“环”。边取值边把该数字加入到num1或num2中去,一个for循环结束后num1就是顺时针组成的9位数,num2为逆时针,最后判断是否满足题意,满足则cnt++即可。一开始把num1和num2的赋初值语句放到了for循环之外,导致结果错误,通过调试发现错误及时改正。

#include <bits/stdc++.h>
using namespace std;



int main()
{
    int n;
    cin>>n;
    while (n--){
        int a[10]={0};
        for (int i = 0; i < 9; ++i) {
            cin>>a[i];
        }
        int cnt=0;
        //一共9种剪法,依次模拟
        for (int i = 0; i < 9; ++i) {
            int num1=0,num2=0;
            //顺时针 9个数组成一个9位数
            int k=(i+1)%9;
            for (int j = 0; j < 9; ++j) {
                num1=num1*10+a[k];
                k=(k+1)%9;
            }
            //逆时针
            k=i;
            for (int j = 0; j < 9; ++j) {
                num2=num2*10+a[k];
                k=(k-1+9)%9;
            }
            if ((num1-num2)%396==0 || (num2-num1)%396==0) cnt++;
        }
        cout<<cnt<<endl;
    }
    return 0;
}


42.求数列项

问题描述

数列是数学世界中一种非常有趣的数字排列规则,它使一串数字相互之间产生了某种联系,变幻无穷。很多数学家对数列产生了浓厚的兴趣,花了很多时间对其进行研究,明明就是其中的一位。一天,他又专注于一种新的数列排列规则,该排列规则满足以下条件:

1. 该数列的第一个数为1。

2. 该数列的第二个数为5。

3. 该数列的第i (其中i > 2)个数为第i - 1个数的数值加上(i - 3) × 3 + 7。

明明很快就推算出了这个数列的前三项数字:

1. 第一项为1。

2. 第二项为5。

3. 第三项为12。(第三项的数字为第二项的数字加上(3 - 3) × 3 + 7,即第三项的数为:5 + (3 - 3) × 3 + 7 = 12)

但是当明明还想继续把数列往下推算的时候,他发现计算量越来越大,计算难度越来越高,计算速度也越来越慢。于是,明明就求助于你这位程序设计专家,帮他写一个程序,计算出数列的前50项,然后当明明需要知道数列中的哪一项的数字时,你就把那一项的数字告诉明明。 明明的问题可以归结为:跟据一个正整数n,要求你输出题目中所描述的数列的第n项数值。

个人总结

此题比较简单,根据题目给出的递推规则写出a[i]=a[i-1]+(i-3)*3+7,递推是从i=3开始。算出前50项并存储到数组中,最终根据输入的n直接输出对应的数组元素即可。

#include <bits/stdc++.h>
using namespace std;

int func(int n,int a[]){
    a[1]=1;
    a[2]=5;
    for (int i = 3; i <=50; ++i) {
        a[i]=a[i-1]+(i-3)*3+7;
    }
    return a[n];
}

int main()
{
    int n;
    int a[51];
    while (cin>>n){
        cout<<func(n,a)<<endl;
    }
    return 0;
}


43.最高频率

题目描述

明明的爸爸是一位著名的数学家。他在明明很小的时候就发现明明有过人的数学天赋,因此有意培养他对数学的兴趣。一次,明明的爸爸和明明玩起了一个数字游戏,这个游戏的名字叫“最高频率”。在游戏中,明明的爸爸要求明明在一串数字中,找出出现次数最多的那个数字,如果有多个数字出现的次数一样,则取最小的那个数字。明明很快就理解的游戏的规则,开始玩起来。明明的爸爸首先给了明明三个数字:3、2、1;明明很快就回答说:“1”(虽然3、2都出现一次,但是1是最小的数字,因此答案是1)。明明的爸爸很惊讶于明明的反应速度,开始加大游戏的难度,给出了由6个数字组成的数字串:2、1、3、4、5、2;明明眼珠子一转,脱口而出:“2”。明明的爸爸意识到简单的数字串很难难住明明,于是决定给出很长的一串字符串来考明明。但与此同时,明明爸爸面对这很长的数字串,也无法一时就统计出哪个数字出现的次数最高。于是就求助于你,让你帮他写一个程序,用来计算出出现次数最多的那个数字。 明明的爸爸的问题可以归结为:给你一个数字串,里面有n个数字,输出这个数字串中出现次数最多的那个数字;如果有多个数字出现次数一样,则输出其中最小的那个数字。

个人总结

将输入的数字串存储在数组a中,num数组用于保存每个数字【1~109】分别出现的次数。边输入就边将对应的num[a[i]]++;输入完成后,每个数字出现的次数都统计完毕,例如num[54]=x,就代表54出现的次数的x次。再遍历一遍num数组,找出最大值,即找到出现次数最多的那个数字,当num[i]>max_num的时候才更新max_num和res,就保证了 如果有多个数字出现次数一样,则保存的是最先出现的那个数字,即最小的数字。

#include <bits/stdc++.h>
using namespace std;



int main()
{
    int n,a[201];
    while (cin>>n){
        vector<int> num(110,0);
        for (int i = 0; i < n; ++i) {
            cin>>a[i];
            num[a[i]]++;
        }
        int max_num=num[1],res=1;
        for (int i = 2; i <= 109; ++i) {
            if (num[i]>max_num){
                max_num = num[i];
                res = i;
            }
        }
        cout<<res<<endl;
    }
    return 0;
}


计算机英语刘艺第五版unit12 英语翻译

       大多数人工智能的研究在构建智能体的背景下被认为表现地很智能,这意味着智能体执行器的行为对通过它的传感器接收到的数据的响应肯定是合理的。因此,我们可以通过考虑这些响应的不同层次来对该研究进行分类。

       最简单的响应就是反射行为,这仅仅是对输入数据的预先响应。更高层次的响应需要包含更多“智能的”行为。例如,我们需要赋予智能体其环境的知识,并且需要智能体相应地调整它的行为。投掷棒球的过程主要就是一个反射行为,但是决定如何投这个球,以及投到哪里,需要当前的环境知识。这个真实世界的知识如何被存储、更新、获取,最终被应用于做决定的过程中,这在人工智能领域中仍然是一个充满挑战性的问题。

       如果我们想要智能体去达成一个目标,例如赢得一个下棋游戏,或者通过一个拥挤的人行道,这就需要另一个层次的响应了。这些目标导向的行为需要智能体的响应,或者一系列的响应,是有意生成行为计划,或从当前的选择中挑选出最佳行为的结果。

AI翻译对比

       人工智能领域的许多研究可以归结为构建行为智能的智能体,即智能体执行器的行动必须是对其传感器所接收数据的理性响应。相应地,我们可以通过考量这些响应的不同层级来对该领域的研究进行分类。

       最简单的响应是反射动作,它仅仅是针对输入数据的预定反应。要获得更"智能"的行为,则需要更高级别的响应。例如,我们或许会赋予智能体关于其环境的知识,并要求其据此调整自身行动。投掷棒球的过程在很大程度上是一种反射动作,但决定如何投掷以及投向何处则需要关于当前环境的知识。这类现实世界的知识如何存储、更新、访问并最终应用于决策过程,在人工智能领域仍然是一个具有挑战性的问题。

       如果我们希望智能体追求某个目标,比如赢得一盘国际象棋对局,或者在拥挤的通道穿梭,则需要另一个层级的响应。这种目标导向的行为要求智能体的响应(或一系列响应)是审慎制定行动计划或从当前选项中选出最佳行动的结果。

计算机英语单词扇贝打卡

Logo

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

更多推荐