第八届ACM趣味编程循环赛重现赛(部分题目)

哈士奇“写作业”

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

     马上就要交作业了,哈士奇深感课业繁忙,为了应付老师布置的功课,哈士奇决定雇用一个写手代写作业!
    
     写手承诺可以为哈士奇写七份作业,报筹是一根金条!金条平均分成相连的七段,哈士奇必须在每份作业写完的时候付给写手一段金条!哈士奇家里有矿(脑子有坑),欣然答应了写手的要求,但是哈士奇只有一根金条,而且金条最多只能分成三部分,哈士奇怎样分才能满足写手的要求呢(写手每写完一份作业,获得一个长度的金条,假设一根金条长度为七,且由于哈士奇很吝啬,如果写手完成了X份作业,那么他不会得到超过X长度的金条)?

Input

本题无输入

Output

输出为两行,第一行为整数 N( N <= 3 ),表示把金条分成 N 段。
第二行包含 N 个按非递减顺序排列的空格隔开的整数,分别表示金条的长度。

Sample Input

本题无输入

Sample Output

示例输出并非正确结果,付给写手的金条可以要回。

Hint

Source

Miracle_QSH

#include<bits/stdc++.h>
using namespace std;
int main()
{
	printf("3\n");
	printf("1 2 4\n");
	return 0;
 } 

 

友好的学长

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

作为409最友好的学长,7989决定再给大家送一道签到题。
众所周知,SDUTOJ提交题目可以选择很多语言,我们可以通过文件的后缀名得知他是那种语言,规则如下:
*.java是java写的,*.cpp是,如c++写的,*.c是c写的果不是这。三种语言则输出none

Input

第一行是一个整数T,代表有T组测试数据。

接下来T行,每行一个字符串,字符串长度不超过20。

字符串格式为s1.s2,字符串s1和s2保证不为空串。

并且字符串只含字母和点号,不包含空格字符。

Output

对于每组数据,根据文件名的后缀来确定是什么语言编写,如果不存在上述三种语言的后缀,则输出none。

Sample Input

4
a.cpp
a.java
a.c
a.sh

Sample Output

c++
java
c
none

Hint

Source

7989

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int t;
	scanf("%d",&t);
	while(t>0)
	{
		char a[30];
		scanf("%s",a);
		int i;
		for( i=0;i<strlen(a);i++)
		{
			if(a[i]=='.')
			{
				i=i+1;
				break;
			}
		}
		if(a[i]=='c'&&a[i+1]=='p'&&a[i+2]=='p'&&a[i+3]=='\0')
		{
			printf("c++\n");
		}
		else if(a[i]=='c'&&a[i+1]=='\0')
		{
			printf("c\n");
		}
		else if(a[i]=='j'&&a[i+1]=='a'&&a[i+2]=='v'&&a[i+3]=='a'&&a[i+4]=='\0')
		{
			printf("java\n");
		}
		else
		{
			printf("none\n");
		}
		t--;
	}
	return 0;
 } 

 

 

哈士奇“速算”

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

    哈士奇最近学会了一种有意思的“速算”方法——指算法,用它可以在0.000000001秒内得出任何一个个位比十位大一的两位数与九相乘的结果,现在请你伸出双手与哈士奇一起学习这个神奇的“算”法:

           

                                                         (图片来源于网络)
    第一步,双手张开,掌心朝上。
    第二步,从左手大拇指开始,到右手大拇指,分别记为1,2,3,4,5,6,7,8,9,10。
    第三步,拿到一个算式,取两位数的个位 X ,将代表 X 的手指弯曲,读为 0 ,0 左边手指数即为答案的百位数,0 右边的手指数即为答案的个位数,数字 0 为答案的十位数。
    例如:34 * 9 = ?首先将第四个手指弯曲,记为 0 ,左边有 3 个手指,右边有 6 个手指,那么答案就是306。
    当然,哈士奇对仅仅只能“算个位数比十位数大一的两位数乘九”并不满足,于是他经过自己的严格推理(胡乱猜想)把“算”法的适用范围推广到“算个位数比十位数大的两位数乘九”,然后给出了更改后的“算”法:
    第一步,双手张开,掌心朝上。
    第二步,从左手大拇指开始,到右手大拇指,分别记为1,2,3,4,5,6,7,8,9,10。
    第三步,设个位数比十位数大 X,拿到一个算式,取两位数的个位 Y ,将代表 Y 的手指和它之前的 X - 1 个手指弯曲,读为 X - 1 ,X - 1 左边手指数即为答案的百位数,X - 1 右边的手指数即为答案的个位数,数字 X - 1 为答案的十位数。
     例如:35 * 9 = ?首先将第四个手指和第三个手指弯曲,记为 1 ,左边有 3 个手指,右边有 5 个手指,那么答案就是315。
    现在,哈士奇满足了,于是臭毛病就来了,他想考一考你,现在他给你一个“个位数比十位数大的两位数乘九”的算式,让你回答出需要弯曲的手指编号(从 1 到 10)和 算式的答案。

Input

输入包含多组,每组给出一个形如 “ XX*9=?” 的算式,保证算式合法。

Output

对于每个算式,输出为三行,第一行为需要弯曲的手指数 N,第二行包含 N 个空格隔开的整数,分别代表需要弯曲的手指的编号(编号从大到小),第三行为计算结果。

Sample Input

34*9=?

Sample Output

1
4
306

Hint

Source

Miracle_QSH

 

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	while(~scanf("%d*9=?",&n))
	{
		int x,y,z;
		y=n%10;
		z=n/10;
		x=y-z;
		printf("%d\n",x);
		for(int i=0;i<x;i++)
		{
			if(i==x-1)
			{
				printf("%d\n",y-i);
			}
			else
			{
				printf("%d ",y-i);
			}
		}
		printf("%d\n",9*n);
	}
	return 0;
}

 

 

征战瓦罗兰

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

      众所周知,409实验室的同学的课余时间都在实验室里度过,每过六个宇宙纪元才能有一次打LOL的机会。这就导致了他们的游戏水平非常地菜,有被狮子狗秒杀来不及开大的千珏,有往对面人堆里走的ADC薇恩,有反向开车逃跑的塞恩,有E来E去的自闭风男亚索,有给对面狮子狗种草的翠神等等。
      某日,在经过了六个宇宙纪元之后,ldq叫上了在宿舍化妆半小时才能下楼的lls(梁老师),和昨天说要补大物实验报告的lxw,重新开启了瓦罗兰大陆的传送门。
        ................(此处省略自闭经历若干字)
                                                          
 
      半个宇宙纪元过去了,瓦罗兰大陆上充满了他们的传闻。
      三狼: 
                 lxw是409第一亚索,输出和辅助五五开。  
                 ldq是409第一布隆,一堆人挤在我旁边动都不能动,然后他居然能空大。
      河道蟹:
                 lls是409第一布隆,二级单杀对面。
                 lxw是409第一薇恩,我亲眼看见他开大闪现到对面5个人中间。
      上路小兵:
                 lls是409第一亚索,基地快炸了还在追对面打野。
                 lxw是409第一布隆,打字都能把自己闪现打出来。

      已知三狼、河道蟹、上路小兵每人只说对了一句话。
      请问409第一布隆、亚索、薇恩分别是谁?

Input

Output

共三行

第一行表示409第一布隆

第二行表示409第一亚索

第三行表示409第一薇恩

Sample Input

 

Sample Output

lxw
ldq
lls

Hint

样例输出不保证正确,只是为了展示输出格式。

Source

lxw

 

#include<bits/stdc++.h>
using namespace std;
int main()
{
	printf("ldq\n");
	printf("lls\n");
	printf("lxw\n");
	return 0;
 } 

 

 

coblocks'Help

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

大家好,我姓c,名obeclocks,你们也可以叫我的中文名“考的不老克斯”。相信大家肯定可以在电脑上找到我,而我将送给你们一个又一个的AC,哇哈哈哈哈,这是不可能的,你们的黑心学长们怎么可能让你们这么容易就ac呢。当然,如果你们可以经过我的考验,你就会神奇地发现题目都变简单了。

(神秘的声音突然出现)考验如下:“考的不老克斯”菜单栏中有“Help”,去点击它!你会发现有很多级选项,现在我会告诉你一个字符串,希望你能告诉我它在第几级目录。例如:“Help”为第一级,“About...”是第二级。

Input

第一行是一个整数T,代表有T组测试数据。

接下来T行,每行一个字符串str,保证输入合法,并严格按照codebolcks中的大小写。

Output

每组数据输出一个数字,每个数据占一行。

Sample Input

2
Help
About...

Sample Output

1
2

Hint

Source

嘟嘟噜

 

# include<bits/stdc++.h>
using namespace std;
int main()
{
    int t;
    scanf("%d",&t);
    while(t>0)
    {
        char a[40];
        scanf("%s",a);
        if(strcmp(a,"Help")==0)
        {
            printf("1\n");
        }
        else if(strcmp(a,"About...")==0)
        {
            printf("2\n");
        }
        else if(strcmp(a,"Tips")==0)
        {
            printf("2\n");
        }
        else if(strcmp(a,"Plugins")==0)
        {
            printf("2\n");
        }
        else if(strcmp(a,"CodeBlocks")==0)
        {
            printf("2\n");
        }
        else
        {
            printf("3\n");
        }
        t--;
    }
    return 0;
}

这比赛真是太有趣了!

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

       

  众所周知,这次比赛是给18级准备的趣味循环(动漫安利)赛。但是409的学长不知道怎么才能让比赛趣味起来,于是他们只好给很简单的题目加了一些古怪的题面,并且配上了一些动漫图片或其他插图,但是参赛的小Y同学觉得这实在是太尬了。小Y同学并不喜欢很长的题目,也不喜欢看动漫。小Y认为,题目的长度越长,插图越多比赛就越尴尬。

         

         单个题目的尴尬度 = 题目标题长度(包括标点符号)*2+插图个数*3。整场比赛的尴尬度为所有题目的尴尬度之和。

         值得注意的是,小Y认为所有题目描述以“众所周知”为开头的题目,尴尬度都会翻倍。

         请你告诉小Y这场比赛的尴尬度是多少,如果尴尬度不超过long long的话,请你在心里默念" 这比赛真是太有趣了! "。

Input

Output

一个整数,表示本场比赛的尴尬度。(出题人良心保证不可能超过long long)

Sample Input

 

Sample Output

777

Hint

样例输出不保证正确,只是为了展示输出格式。

Source

lxw

#include<bits/stdc++.h>
using namespace std;
int main()
{
	printf("132\n");
	return 0;
	
 } 

 

 

签到题

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

签到题来了,送大家一个AC。

给你一个长度为N的字符串,请找出连续出现最多的两个子符。相同个数输出字典序小的。

强行趣味。lxw作为LOL的最强王者,一直热衷于LOL的抽奖活动,可是LOL现在的抽奖活动越来越多,lxw的零花钱有些不够用了,他想请你算一下他怎么才能最大几率中奖。

抽奖规则如下:

LOL会给你一段序列,你可以选定其中连续两个购买,抽奖会随机选定两个连续的,如果和你选定的相同,那么你就可以从上面奖池中选择一个皮肤。

注意 子串可以重合。

Input

输入一个整数N(2 <= N <= 100)。
接着输入长度为N的字符串(只包含大写字母)。

Output

输出出现最多的连续两个字符,

Sample Input

7
ABACABA

Sample Output

AB

Hint

AB出现了两次,BA出现了两次,AC出现了一次,CA出现了一次,所以选字典序小的AB

Source

7989

 

#include <bits/stdc++.h>
using namespace std;
struct node
{
    char s[5];
};
bool com(node a,node b)
{
    if (strcmp(a.s,b.s)<0)
        return true;
    else
        return false;
}
int main()
{
    int n;
    char ss[111];
    node a[100];
    cin>>n;
    cin>>ss;
    int ans=1,cnt=0;
    for (int i=0;i<n-1;i++)
    {
        a[cnt].s[0]=ss[i];
        a[cnt].s[1]=ss[i+1];
        a[cnt].s[2]='\0';
        cnt++;
    }
    sort(a,a+cnt,com);
    node temp=a[0];
    for (int i=0;i<cnt-1;i++)
    {
        int j,cntt=1;
        for (j=i+1;j<cnt;j++)
        {
            if (strcmp(a[i].s,a[j].s)==0)
                cntt++;
            else
            {
                break;
            }
        }
        if(cntt>ans)
        {
            ans=cntt;
            temp = a[i];
        }
    }
    cout<<temp.s<<endl;
    return 0;
}

 

预习进度

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

紧张的期末预习(复习)即将到来,已知x只在奇数天预习(第1,3,5,7……天预习)。

通过预习每天可以学到 a 个单位的知识,但是如果不学习的话每天会忘掉 b 个单位的知识,

现在距离考试还有k天了,x想知道到按照这个进度到考试那天能学得多少个单位的知识。

Input

多组输入,数据组数不超过100组。

每组数据只有一行用空格分隔的三个数a,b,k 。1 <= a,b,k <= 1000000000。

Output

每组数据输出一行,一个数字代表到考试时一共能学到多少知识。

Sample Input

5 2 3
1 10 5
1 1 1000000000

Sample Output

8
-17
0

Hint

Source

行走的二叉树

 

#include<bits/stdc++.h>
using namespace std;
long long int a,k,b;
int main()
{
	while(~scanf("%lld %lld %lld",&a,&b,&k))
	{
		long long int sum=0;
		if(a==b)
		{
			if(k%2==0)
			{
				printf("0\n");
			}
			else if(k%2==1)
			{
				printf("%lld\n",a);
			}
		}
		else
		{
			if(k%2==0)
			{
				sum=a*(k/2)-b*(k/2);
			}
			else if(k%2==1)
			{
				sum=a*((k+1)/2)-b*((k-1)/2);
			}
			printf("%lld\n",sum);
		}
	}
	return 0;
}

 

哈士奇“跳啊跳”

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

     哈士奇喜欢跳啊跳,现在他站在一条路上,路被分成了 N 段,每段道路的路旁有一个路标:“请往前跳 Xi 步”,哈士奇一开始在第 1 段,如果哈士奇在第 i 段路上,那么他会按照第 i 块路标的指示再往前跳 Xi 步,请问哈士奇能经过终点 N 吗?

Input

    第一行包含一个整数 N(1 <= N <= 1000) ,表示路的段数。

    第二行包含 N 个用空格隔开的整数 Xi(0 <= Xi <= 1000) ,表示第 i 块路标指示哈士奇需要往前跳的步数。

Output

    如果哈士奇能跳到终点 N,输出 “YES”,不能输出 “NO”。

Sample Input

3
1 2 3

Sample Output

YES

Hint

Source

Miracle_QSH

 

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	scanf("%d",&n);
	int a[1100];
	for(int i=0;i<=n-1;i++)
	{
		scanf("%d",&a[i]);
	}
	int count=0;
	while(count<n-1)
	{
		if(a[count]==0&&count<n-1)
		{
			printf("NO\n");
			break;
		}
		else
		{
			count=count+a[count];
		}
	}
	if(count>=n-1)
	{
		printf("YES\n");
	}
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值