2018级《程序设计基础(B)I》期末上机考试 重现(第一场)

今年是哪年?

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

 2018级《程序设计基础(B)I》期末上机考试 重现(第一场)_第1张图片

     威廉是人类世界的准勇者,在完成任务时被石化,直至数百年后年才被发现,治疗并脱离石化状态。

     作为刚刚脱离石化的威廉,他十分想知道今年是哪一年。

     如果得知今年的年分大于等于2018年,威廉会十分惊讶并惊呼 "What?" 。

     否则输出 "I know"(不包含引号)。

Input

输入一个数字n,代表威廉苏醒时的年份。( 1000 <= n <= 9999 )

Output

 若 n 大于等于2018,输出 "What?" ,否则输出 "I know" 。(均不包含括号)

Sample Input

2018

Sample Output

What?

Hint

Source

行走的二叉树

 

#include
using namespace std;
int main()
{
	int n;
	scanf("%d",&n);
	if(n>=2018)
	{
		printf("What?\n");
	}
	else
	{
		printf("I know\n");
	}
	return 0;
 }

珂朵莉与黄油面包

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

珂朵莉非常喜欢吃黄油面包,现在珂朵莉想吃一个大小为 d 的黄油面包,你能满足她么?2018级《程序设计基础(B)I》期末上机考试 重现(第一场)_第2张图片

Input

一个正整数 d 。(1<= d <=20)

Output

一个高和宽均为 2*d-1 的图形,代表一个大小为 d 的黄油面包,详见样例。

Sample Input

3

Sample Output

  *
 * *
*   *
 * *
  *

Hint

Source

行走的二叉树

#include
using namespace std;
int n;
int main()
{
    scanf("%d",&n);
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=n-i; j++)printf(" ");
        printf("*");
        for(int j=1; j<=2*i-3; j++)printf(" ");
        if(i!=1)printf("*");
        printf("\n");
    }
    for(int i=n-1; i>=1; i--)
    {
        for(int j=1; j<=n-i; j++)printf(" ");
        printf("*");
        for(int j=1; j<=2*i-3; j++)printf(" ");
        if(i!=1)printf("*");
        printf("\n");
    }
    return 0;
}

珂朵莉与圣剑保养

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

2018级《程序设计基础(B)I》期末上机考试 重现(第一场)_第3张图片

     圣剑是由若干护符经过精密的联系组合成的,在进行圣剑的保养时由于护符间复杂的相互干涉作用会发出美妙的音符声,威廉作为人类勇者精通圣剑保养,经过多年总结发现最终发出的音符与保养时拨动的护符编号 m 及拨动的力度 n 存在一定的函数关系F(m, n) 。

    珂朵莉用大小为 n 的力度拨动了 一下编号为 m 的护符,你知道经过复杂的相互干涉作用最终发出的音符是什么么?

F(m, n)的定义是:

若 m * n <= 7,返回 m * n 。

否则若 m >= 0且 n >= 0,返回F( m - 2 , F ( m - 1 , n - 1 ) ) 。

否则若 m < 0 或 n < 0 , 返回 1 。

Input

多组输入至文件结束,每行两个正整数 m,n。( 0<= m, n<= 100 )

Output

每组数据输出一行包含一个正整数代表最终发出的音符。

Sample Input

23 33

Sample Output

0

Hint

Source

行走的二叉树

 

#include
using namespace std;
int f(int m,int n)
{
	int res=0;
	if(m*n<=7)
	{
		res=m*n;
	}
	else if(m>=0&&n>=0)
	{
		res=f(m-2,f(m-1,n-1));
	}
	else if(m<0||n<0)
	{
		res=1;
	}
	return res;
}
int main()
{
	int m,n;
	while(~scanf("%d %d",&m,&n))
	{
		int arr=0;
		arr=f(m,n);
		printf("%d\n",arr);
	}
	return 0;
}

 

珂朵莉与失忆

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

 2018级《程序设计基础(B)I》期末上机考试 重现(第一场)_第4张图片

      珂朵莉由于受到前世记忆的侵蚀会不断地失忆。但是并不是每天都会失忆。

      失忆的发生条件是当且仅当这一天的编号为素数的时候,会失去这一天编号的数位之和个单位的记忆

      现在珂朵莉想知道在编号为 l 到 r 的这段日子里一共会失去多少记忆

Input

      多组输入至文件结束为止,每组两个数 l , r 含义如上文所述。到文件结束为止(1 <= l <= r <= 100)

Output

      输出一个整数代表失去的记忆总数。

Sample Input

10 15

Sample Output

6

Hint

Source

行走的二叉树

#include
using namespace std;
int main()
{
	int i,r;
	while(~scanf("%d %d",&i,&r))
	{
		int sum=0,k,j;
		for( j=i;j<=r;j++)
		{
			for( k=2;k0)
				{
					sum=sum+x%10;
					x=x/10;
				}
			}
		}
		printf("%d\n",sum);
	}
	return 0;
}

珂朵莉与圣剑

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

2018级《程序设计基础(B)I》期末上机考试 重现(第一场)_第5张图片

       妖精仓库里有n把圣剑,每把圣剑都有一个攻击值 d 和对使用者体力的消耗值 s 。

       珂朵莉想要攻击值高的圣剑,同时又想要体力的消耗尽可能地低,因此对她来说,圣剑的满意度等于攻击值 d 除以消耗值 s 。

       现在珂朵莉想要知道她第 k 满意的圣剑的满意度是多少(满意度越高越好)。

Input

第一行两个正整数 n 和 k ,n 代表圣剑的数量。(1 <= k <= n <= 1000)       

接下来 n 行每行两个正整数 di 和 si ,分别代表第 i 把圣剑的攻击值和对使用者体力的消耗值。(1 <= si , di <=100)

Output

一个正整数代表她第 k 满意的圣剑的满意度是多少,结果保留两位小数。

Sample Input

4 2
1 3
2 4
3 6
4 5

Sample Output

0.50

Hint

Source

行走的二叉树

 

#include
using namespace std;
struct node
{
	int si;
	int di;
	double  manyi; 
}s[1100];
int main()
{
	struct node m[2];
	int n,k;
	scanf("%d %d",&n,&k);
	for(int i=1;i<=n;i++)
	{
		scanf("%d %d",&s[i].di,&s[i].si);
		s[i].manyi=1.0*s[i].di/s[i].si;
	}
	for(int i=1;i<=n-1;i++)
	{
		for(int j=i+1;j<=n;j++)
		{
			if(s[i].manyi

 

珂朵莉与妖精仓库的妖精们

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

2018级《程序设计基础(B)I》期末上机考试 重现(第一场)_第6张图片

    随着失忆的加剧,珂朵莉已经不能记清妖精仓库里小妖精们的名字了。

    好在珂朵莉一直有写日记的好习惯,一天,在她读日记的时候,想要知道在自己的日记中对于每个小妖精分别提到过多少次她们的名字。你能告诉她么?

妖精仓库中的小妖精的名字分别为 Nephren  Ithea  Rhantolk  Nopht  

Input

   一长度行不超过1000的字符串代表日记的内容,输入数据保证不含空格。

Output

输出包含四行,

每行按照样例顺序输出名字及其在日记中被提到的次数。

输出格式请仔细按照示例输出的格式输出。

Sample Input

fdsgfsgfdNephrensNephrenItheagdfRhantolkRhantolkdsdNophtNopht

Sample Output

Nephren: 2
Ithea: 1
Rhantolk: 2
Nopht: 2

Hint

Source

行走的二叉树

#include
using namespace std;
int a[5],len;
string s[5]= {"Nephren","Ithea","Rhantolk","Nopht"},str;
int main()
{
 
    cin>>str;
    len=str.size();
    for(int i=0; i

 

珂朵莉与斯卡布罗集市

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

2018级《程序设计基础(B)I》期末上机考试 重现(第一场)_第7张图片

        斯卡布罗集市是一个非常繁华的集市,这里有很多有名的景点。为了防止迷路,威廉买了一张集市的地图,地图长 m 宽 n ,其中 “1” 代表他们目前的位置,“0” 代表空地,其他数字分别代表不同的景点(每个景点的编号均不同且每个景点在地图上只出现一次)。

        现在珂朵莉想要知道从当前位置到距离编号为 x 的景点在地图上的最短距离是多少(在地图上只能沿与坐标平行的方向移动,图中的每一个点都可以走),你能帮帮他么?

Input

        多组输入,每组数据第一行两个数字 n , m 代表地图的长和宽( 1<= n, m<= 100) 。

        接下来的 n 行每行 m 个数(空格分隔)代表地图。

        最后输入一个数字 x 代表珂朵莉想要去的景点编号( 2<= x<= 1000)。

Output

        输出当前位置距离想去的景点在地图上的最短距离(在地图上只能沿与坐标平行的方向移动)

Sample Input

3 3
0 1 2
3 0 0
6 4 9
6

Sample Output

3

Hint

在计算地图上的最短距离时结果仅与两点坐标有关而不会因为其他景点的阻隔而绕路,对于样例:

( 1, 2 ) -> ( 2, 2 )

( 2, 2 ) -> ( 3, 2 )

( 3, 2 ) -> ( 3, 1 )

因此答案是 2 + 1 ,三步。

Source

行走的二叉树

#include
using namespace std;
int n,m,x,y,a[123][123],xx;
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1; i<=n; i++)
        for(int j=1; j<=m; j++)
        {
            scanf("%d",&a[i][j]);
            if(a[i][j]==1)x=i,y=j;
        }
    scanf("%d",&xx);
    for(int i=1; i<=n; i++)
        for(int j=1; j<=m; j++)
        {
            if(xx==a[i][j])
            {
                printf("%d\n",abs(i-x)+abs(j-y));//c++函数库中abs函数是求绝对值的函数 
                return 0;
            }
        }
    return 0;
}

 

最终之战

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

2018级《程序设计基础(B)I》期末上机考试 重现(第一场)_第8张图片    

恭喜大家来到最终之战。这对珂朵莉一行来说是非常重要的一战,同时也极有可能是决定你能否在本次期末考试中成功AK,收获满分的一战,祝大家战斗胜利。

 

为了简化战斗过程,尽可能的用最小的损失来赢得战斗,我们制定了如下的战斗规则:

     战斗开始后,我方会按照输入的顺序依次派出血量大于 0 的妖精循环攻击兽( 最后一人攻击完后再从第一个人开始依次攻击),每次攻击时所实际输出的攻击力为妖精的攻击力与所持圣剑之和,由于兽具有防御,兽实际收到的伤害为所受攻击的攻击力减去自身的防御力。攻击时优先攻击体型较大的兽。攻击结束后我方妖精同样会受到所攻击兽的攻击,受到的伤害同样为兽的攻击力减掉我方妖精的防御力。同时由于速度的不同,若我的速度大于所攻击兽的速度,我可以额外攻击一次相同的兽,若我的速度小于所攻击兽的速度 ,则兽可以多攻击我一次。

注意,若被攻击后血量小于等于0,则认为他已经牺牲了,将不会再参与之后回合的战斗,但当前回合不受影响,例如在某一回合中,兽受到攻击后血量降低至0一下,但它依然可以在本回合中发起反击。

 

下面是兽的数据:

中文名                  英文名(id)  血      功    防   速      体型
叹月的最初之兽    Chantre       2333   100   7    input    9
深潜的第六兽        Timere        600      34    4    input    8
穿凿的第二兽        Aurora        200      24    3    input    7
绞吞的第四兽        tarde           400     43     9    input    6
广覆的第五兽        Materno      500     34     3    input    5
沉滞的第十一兽    Croyance    1100    65    6    input    4
织光的第十四兽    Vinkra         1400    90    2    input    3

 

下面是圣剑的数据:

中文名           英文名(id)   加成 

珀西瓦尔       Perseval          78 
瑟尼欧里斯   Ceniolis            43 
瓦尔卡利斯   Valgaris            110
印萨尼亚       Insania             23

现在请你根据输入的数据判断能否在100回合内获胜,若可以获胜,输出攻击的最少回合数,否则输出“BOOM!”。

Input

首先输入四行,每行由五部分组成,分别是要派出的妖精的名字,血量,攻击值,防御值,速度和所拿的武器名。

最后一行包含七个空格分隔的数字,代表按体型由大到小的兽的速度。

妖精和武器的名字是一个长度不超过10的不含空格的字符串,1<=血量<=2000,10<=攻击值<=100,1<=防御值<=100,1<=速度<=10。

Output

若可以获胜(所有兽的血量均小于等于0),输出攻击的最少回合数,否则输出“BOOM!”。

Sample Input

Willem 2000 100 100 10 Valgaris
Chtholly 1500 70 40 9 Perseval
Nephren 1000 56 45 6 Insania
Ithea 500 65 54 5 Ceniolis
9 4 3 5 3 2 6

Sample Output

33

Hint

我方每派出一名妖精战斗即视为回合数加一。

实际所受攻击可能小于零,例如,当所受攻击力为5,自身防御力为10的时候,实际所受攻击为5-10=-5,这时无需特殊判断,可以理解为当攻击过小时,被攻击一方可化攻击为血量,血量上升。

Source

行走的二叉树

#include
using namespace std;
#define maxn 12
int ans;
mapjian;
struct node
{
    string str;
    double xue,gong,fang,su;
    int big;
    bool operator<(const node &c)const
    {
        return bigque;
    priority_queueq;
    for(int i=0; i<4; i++)
    {
        cin>>data[i].ss>>data[i].xue>>data[i].gong>>data[i].fang>>data[i].su>>data[i].dao;
        que.push(data[i]);
    }
    for(int i=6; i>=0; i--)
    {
        cin>>b[i].su;
        b[i].big=i;
    }
    b[6].xue=2333,b[6].gong=100,b[6].fang=7;
    b[5].xue=600,b[5].gong=34,b[5].fang=4;
    b[4].xue=200,b[4].gong=24,b[4].fang=3;
    b[3].xue=400,b[3].gong=43,b[3].fang=9;
    b[2].xue=500,b[2].gong=34,b[2].fang=3;
    b[1].xue=1100,b[1].gong=65,b[1].fang=6;
    b[0].xue=1400,b[0].gong=90,b[0].fang=2;
    for(int i=6; i>=0; i--)
        q.push(b[i]);
    while(1)
    {
        tp=que.front();
        que.pop();
        cp=q.top();
        q.pop();
        if(tp.sucp.su)
        {
            cp.xue-=(tp.gong+jian[tp.dao]-cp.fang)*2;
            tp.xue-=(cp.gong-tp.fang);
        }
        else
        {
            cp.xue-=(tp.gong+jian[tp.dao]-cp.fang);
            tp.xue-=(cp.gong-tp.fang);
        }
        if(cp.xue>0)q.push(cp);
        if(tp.xue>0)que.push(tp);
        ans++;
        if(q.size()==0)
        {
            flag=1;
            break;
        }
        if(que.empty())
        {
            flag=0;
            break;
        }
    }
    if(flag)
        printf("%d\n",ans);
    else printf("BOOM!\n");
    return 0;
}

 

你可能感兴趣的:(SDUT)