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

御坂美琴与妹妹们

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

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

 

    在[量产型能力者计划]和[绝对能力者进化计划]中,学院都市利用御坂美琴的体细胞总共制作了20001个克隆个体。她们的个体编号分别为00001-20001。其中[00001,20000]号被称为"SISTER"(御坂妹妹) ,20001号被称为 "LastOrder"(最后之作)。

    现在给你一个御坂的个体编号,请你判断她是"SISTER" 还是"LastOrder".

Input

输入一个正整数 id 表示御坂的个体编号 ( 1 <= id <= 20001 )。

输入数据没有前导零。

Output

根据题意输出"SISTER" 或是 "LastOrder"。 (引号不输出)

Sample Input

10086

Sample Output

SISTER

Hint

Source

lxw

#include
using namespace std;
int main()
{
	int n;
	scanf("%d",&n);
	if(n==20001)
	{
		printf("LastOrder\n");
	}
	else
	{
		printf("SISTER\n");
	}
	return 0;
}

 

御坂美琴与初春饰利

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

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

 

        「初春饰利」 是御坂美琴的好朋友,在风纪委员中负责通信与情报管理工作。她很擅长密码破译等骇客工作,曾击败许多网络黑客入侵“某个系统”的挑战,是超天才的黑客,也是都市传说中“守护神(Gatekeeper)”的正体,但她本人并不知晓。

       但是某一天,御坂美琴给了初春一个密码。初春发现这个密码实在是太复杂了,完全找不出任何的设计规律。经过认真分析后,初春发现密码中包含且仅包含大写字母和数字,她决定先把这些大写字母和数字分离开再继续寻找规律。

Input

    输入数据共两行。

    第一行输入一个正整数 len 表示字符串的长度。 (2 <= len <= 100) 

    第二行输入一个长度为 len 包含且仅包含大写字母和数字的字符串。

Output

     第一行输出字符串中出现的大写字母。

     第二行输出字符串中出现的数字。

     (按在原串中出现的顺序输出,已经输出过的字符若再次出现仍需要输出)

Sample Input

18
ZXC741ASD852QWE963

Sample Output

ZXCASDQWE
741852963

Hint

Source

lxw

#include
using namespace std;
int main()
{
	int n;
	scanf("%d",&n);
	getchar();
	char a[1100],b[1100],c[1100];
	int count=0,flag=0;
	gets(a);
	for(int i=0;i='A'&&a[i]<='Z')
		{
			b[count++]=a[i];
		}
		else
		{
			c[flag++]=a[i];
		}
	}
	b[count]='\0';
	c[flag]='\0';
	printf("%s\n",b);
	printf("%s\n",c);
	return 0;
}

 

御坂美琴与佐天泪子

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

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

 

「佐天泪子」是超过level 5级别的强者(误),人称「泪爷」。泪爷的衣服各式各样,这种超能力被誉为「海澜之家」。

 

     一天,泪爷准备和御坂美琴、初春饰利一起出去吃饭,她打开了自己的衣柜(启动「海澜之家」),想要挑选一件合适的衣服出门。

     衣柜里总共有 N 件衣服依次排列,第 i 件衣服的编号为 i。

     第 i 件衣服有它的美观值 ai 和当前的穿戴次数 bi,每件衣服的优先值为 ai / (bi+1) ,向下取整 。不过泪爷和[初春饰利]关系非常好,初春喜欢编号为素数的衣服,所以如果某件衣服的编号为素数,那么泪爷会把这件衣服的优先值翻倍,泪爷想知道这 N 件衣服的优先值分别是多少。

Input

第一行输入一个正整数 N。(1<= N <=100)

接下来N行,每行输入两个正整数 ai,bi 。(0 <= ai , bi<= 100)

Output

输出一行,包括 N 个整数,第 i 个整数表示第 i 件衣服的优先值。

Sample Input

5
8 2
1 1
4 3
10 0
5 1

Sample Output

2 0 2 10 4

Hint

Source

lxw

 

#include
using namespace std;
struct node
{
	int ai;
	int bi;
	int youxian;
}s[1100];
int main()
{
	int n,i,k;
	scanf("%d",&n);
	for( i=1;i<=n;i++)
	{
		scanf("%d %d",&s[i].ai,&s[i].bi);
		for( k=2;k

 

御坂美琴与白井黑子

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

     

 

    「白井黑子」 是御坂美琴的舍友,同时也是御坂美琴的超级迷妹,平时称呼美琴为"姐姐大人"。为了庆祝和美琴同寝一个月,白井黑子订购了一些“ 电脑配件 ”。但是御坂美琴接了送货员电话,在一番追问后事情败露。

     白井黑子决定下次买“电脑配件”的时候,要和送货员商量好接头暗号,接头暗号是一个函数。

     白井黑子定义了一个函数 F(x, y) :

     当 y 不等于0时,返回 F(x, y-1)+F(x-1, y-1)。

     当 y 等于0时,返回 x+1。

     黑子要求送货员说一个 x, y ,然后自己回答 F(x, y) 。

Input

   一行两个整数分别表示x, y。  (0<=x,y<=15)

Output

一个整数表示F(x, y)

Sample Input

3 5

Sample Output

48

Hint

Source

lxw

#include
using namespace std;
int f(int x,int y)
{
	int res=0;
	if(y!=0)
	{
		res=f(x,y-1)+f(x-1,y-1);
	}
	else
	{
		res=x+1;
	}
	return res;
}
int main()
{
	int x,y;
	scanf("%d %d",&x,&y);
	int arr;
	arr=f(x,y);
	printf("%d\n",arr);
	return 0;
}

 

真正的落雷

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

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

 

「御坂美琴」在学园都市中仅有的七名超能力者(Level 5)中排名第三。最常用的招式是「超电磁炮(Railgun)」,但是她最后的绝招是[真正的落雷]。

 

       一天,御坂美琴来到一片n*m的空地上测试落雷的威力,首会她会选择释放的威力K ,然后选择释放的中心坐标(x,y) 。 所有距离中心坐标(x,y)距离小于等于 K 的空地全部被烧焦。烧焦的空地用 '*' 表示,未烧焦的空地用 '.' 表示,请你输出落雷后空地的状态。御坂美琴觉得这十分简单,所以请你千万不要想得太复杂。

      御坂美琴能够控制好自己的能力,所以落雷的攻击范围保证不会超出空地

Input

输入五个整数n , m, x , y , K 分别表示空地的大小、落雷的释放中心坐标和落雷的威力。

(1 <= n,m,x,y <= 300, 0 <= k <= 300)

Output

n 行 m 列的字符矩阵。

Sample Input

10 10 5 4 3

Sample Output

..........
...*......
..***.....
.*****....
*******...
.*****....
..***.....
...*......
..........
..........

Hint

两点间的距离:两点的横坐标之差+两点的纵坐标之差。

例如(3,5)与(7,8) 之间的距离为:|3-7|+|5-8| = 7

Source

lxw

#include 
using namespace std;
int main()
{
    int n,m,x,y,k;
    char st[500][500];
    memset(st,'.',sizeof(st));
    scanf("%d%d%d%d%d",&n,&m,&x,&y,&k);
    x-=1,y-=1;
    for(int i=0;i

 

御坂美琴与呱太

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

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

 

     御坂美琴最喜欢「呱太」了,尽管她自己从来不承认。

     一天御坂美琴在隔壁商店发现了新上架的呱太,作为[常盘台中学]的大小姐,她有足够多的钱把所有的呱太全部买下来。但是她现在只带了 X 元钱,美琴决定先买尽量多的呱太,如果还有剩余的呱太,那么她就再回去拿钱买剩余的呱太。她想知道现在最多能先买下多少呱太。

     商店里共有 N 个呱太,第 i 个的价格为 vi 元。

Input

第一行输入一个正整数N,X(1<=N<=100 , 1 <= X <= 1000000)

第二行输入 N 个正整数,第 i 个正整数表示第 i 个呱太的价格 vi。(1 <= vi <= 9000)

Output

一个正整数,表示现在最多能先买下多少个呱太。

Sample Input

5 10
7 2 5 3 1

Sample Output

3

Hint

Source

lxw

#include
using namespace std;
int main()
{
	int n,x;
	scanf("%d %d",&n,&x);
	int a[110],t;
	for(int i=0;ia[j])
			{
				t=a[i];
				a[i]=a[j];
				a[j]=t;
			}
		}
	}
	int count=0;
	for(int i=0;i=a[i])
		{
			x=x-a[i];
			count++;
		}
		else
		{
			break;
		}
	}
	printf("%d\n",count);
	return 0;
}

 

御坂美琴与伙伴们

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

    

 

     一天御坂美琴、白井黑子、初春饰利、佐天泪子四个人在一起玩游戏,游戏规则是给一个 N*M 的方格矩阵,矩阵中有一些数字,四个人依次取数字,每次可以取走一个小方格内的数字,每个方格最多被取一次。当所有数字被取完时游戏结束,每个人的最终得分是其所取的数字之和。

     每个人都想要使自己的得分尽可能多,那么你知道游戏结束后她们每个人的得分分别是多少吗?

Input

   第一行输入两个正整数N,M(1<=N, M<=10)。

   接下来输入一个N行M列的数字矩阵, 小格子内数字的取值范围为[1,1000]。

Output

  输出一行包括4个整数,分别表示御坂美琴、白井黑子、初春饰利、佐天泪子的得分。

Sample Input

2 3
2 2 3
4 4 1

Sample Output

6 5 3 2

Hint

Source

lxw

#include 
using namespace std;
bool cmp(int a,int b)
{
    return a>b;
}
int main()
{
    int n,m;
    int data[50][50];
    int a[1000];
    int o=0;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            scanf("%d",&data[i][j]);
            a[++o]=data[i][j];
        }
    }
    sort(a+1,a+1+o,cmp);
    int b[1000],c[1000];
    int p=0,q=0;
    int a1=0,a2=0,a3=0,a4=0;
    bool vis[1000];
    memset(vis,false,sizeof(vis));
    for(int i=1;i<=o;i++)
    {
        if(i%2)
            b[++p]=a[i];
        else
            c[++q]=a[i];
    }
    for(int i=1;i<=p;i++)
    {
        if(i%2)
            a1+=b[i];
        else
            a3+=b[i];
    }
    for(int i=1;i<=q;i++)
    {
        if(i%2)
            a2+=c[i];
        else
            a4+=c[i];
    }
    printf("%d %d %d %d\n",a1,a2,a3,a4);
    return 0;
}

 

一方通行与最后之作

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

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

 

学园都市仅有的七名超能力者(Level 5)排名第一位,能力为“矢量操作”,代号「一方通行(Accelerator)」。

 

       某天,「最后之作」自己去商场玩耍,很晚还没有回来。「一方通行」很担心于是决定去找最后之作。

       商场可以大体看作一个 N*M 的矩形,墙壁和遮挡物用 '*' 表示,空白位置用 '.' 表示,一方通行和最后之作的起始位置分别用 'A' 和 'L' 表示。(显然,他们两个人的起始位置是不可能有遮挡物的)

        两人总共最多进行 K 次移动,每次移动可以用两个字符串 name 和 direction 来表示。

        如果 name 为"Accelerator",表示本次是「一方通行」移动。

        如果 name 为"LastOrder",表示本次是「最后之作」移动。

        direction 可能为"up"或"down"或"left"或"right",分别表示向上、向下、向左、向右移动一个单位长度。 

        如果本次要移动的位置在商场外或者存在遮挡物,那么将不移动。如果两人中途已经相遇(坐标重合),那么之后的所有移动全部取消。

        数据保证「一方通行」和「最后之作」会相遇,如果最后是「一方通行」走向「最后之作」请输出"Accelerator",如果是「最后之作」走向「一方通行」请输出"MisakaMisaka"。然后输出两人实际总共移动了多少步。

Input

首先输入两个正整数 N, M表示商场的大小。(2 <= N, M <= 100)

然后输入一个 N 行 M 列的字符矩阵。

下一行输入一个正整数 K,表示两人总共最多进行 K 次移动。 ( 1 <= K <= 100)

接下来 K 行,每行包括两个字符串,分别表示移动的角色和移动的方向。

Output

第一行输出一个字符串。

第二行输出一个正整数,表示两人实际总共移动了多少步相遇。

Sample Input

4 5
A.*..
..*..
..*..
....L
11
Accelerator down
LastOrder left
LastOrder right
LastOrder left
LastOrder left
Accelerator down
Accelerator down
Accelerator down
LastOrder up
LastOrder left
LastOrder left

Sample Output

MisakaMisaka
9

Hint

样例中,两人最终在第四行第一列相遇,最后一次移动是「最后之作」走向「一方通行」。

「一方通行」移动了3步,「最后之作」移动了6步,两人总共移动了9步。

Source

lxw

#include 
using namespace std;
int main()
{
    int n,m,k;
    char st[150][150];
    scanf("%d%d",&n,&m);
    int x1,y1,x2,y2;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            scanf(" %c",&st[i][j]);
            if(st[i][j]=='A')
            {
                x1=i;
                y1=j;
            }
            else if(st[i][j]=='L')
            {
                x2=i;
                y2=j;
            }
        }
    }
    scanf("%d",&k);
    char name[50],op[50],ans[50];
    bool flag=false;
    int sum=0;
    for(int i=1;i<=k;i++)
    {
        int temp;
        scanf("%s %s",name,op);
        if(strcmp(name,"Accelerator")==0)
        {
            bool tt=false;
            if(strcmp(op,"down")==0)
            {
                temp=x1+1;
                if(st[temp][y1]!='*'&&temp>=1&&temp<=n)
                {
                    tt=true;
                    x1++;
                }
            }
            else if(strcmp(op,"up")==0)
            {
                temp=x1-1;
                if(st[temp][y1]!='*'&&temp>=1&&temp<=n)
                {
                    tt=true;
                    x1--;
                }
            }
            else if(strcmp(op,"left")==0)
            {
                temp=y1-1;
                if(st[x1][temp]!='*'&&temp>=1&&temp<=m)
                {
                    tt=true;
                    y1--;
                }
            }
            else
            {
                temp=y1+1;
                if(st[x1][temp]!='*'&&temp>=1&&temp<=m)
                {
                    tt=true;
                    y1++;
                }
            }
            if(flag==false&&tt)
                sum++;
            if(x1==x2&&y1==y2&&flag==false)
            {
                strcpy(ans,"Accelerator");
                flag=true;
            }
        }
        if(strcmp(name,"LastOrder")==0)
        {
            bool t2=false;
            if(strcmp(op,"down")==0)
            {
                temp=x2+1;
                if(st[temp][y2]!='*'&&temp>=1&&temp<=n)
                {
                    t2=true;
                    x2++;
                }
            }
            else if(strcmp(op,"up")==0)
            {
                temp=x2-1;
                if(st[temp][y2]!='*'&&temp>=1&&temp<=n)
                {
                    t2=true;
                    x2--;
                }
            }
            else if(strcmp(op,"left")==0)
            {
                temp=y2-1;
                if(st[x2][temp]!='*'&&temp>=1&&temp<=m)
                {
                    t2=true;
                    y2--;
                }
            }
            else
            {
                temp=y2+1;
                if(st[x2][temp]!='*'&&temp>=1&&temp<=m)
                {
                    t2=true;
                    y2++;
                }
            }
            if(flag==false&&t2)
                sum++;
            if(x1==x2&&y1==y2&&flag==false)
            {
                strcpy(ans,"MisakaMisaka");
                flag=true;
            }
        }
    }
    printf("%s\n%d\n",ans,sum);
    return 0;
}

 

你可能感兴趣的:(SDUT)