CSP-J 入门组真题(6道题)

1436: 【入门】标题统计

题目描述
凯凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符? 注意:标题中可能包含大、小写英文字母、数字字符、空格和换行符。统计标题字符数时,空格和换行符不计算在内。(noip2018普及组复赛)

输入样例#1:

234

输出样例#1:

3

输入样例#2:

Ca 45

输出样例#2:

4

输入格式
输入文件只有一行,一个字符串 ss。
输出格式
输出文件只有一行,包含一个整数,即作文标题的字符数(不含空格和换行符)。
样例输入

234
#样例输出
3
代码:

#include<bits/stdc++.h>
using namespace std;
char s[1000];
int len,sum=0;
int main() 
{
	scanf("%[^\n]",s);
	len=strlen(s);
	for(int i=0; i<len; i++)
		if(s[i]!=' ')
			sum++;
	printf("%d\n",sum);

	return 0;
}

1934: 【入门】数字游戏

题目描述
小 K 同学向小 P 同学发送了一个长度为 8 的 01 字符串来玩数字游戏,小 P 同学想要知道字符串中究竟有多少个 1。
注意:01 字符串为每一个字符是 0 或者 1 的字符串,如“101”(不含双引号)为一个长度为 3 的 01 字符串。
输入格式
输入文件只有一行,一个长度为 8 的 01 字符串 s。
输出格式
输出文件只有一行,包含一个整数,即 01 字符串中字符 1 的个数。

样例输入

11111111

样例输出

8

代码:

#include<bits/stdc++.h>
using namespace std;
char s[1000];
int len,sum=0;
int main() 
{
	scanf("%[^\n]",s);
	len=strlen(s);
	for(int i=0; i<len; i++)
		if(s[i]=='1')
			sum++;
	printf("%d",sum);
	return 0;
}

2322: 【入门】优秀的拆分(power)

题目描述
一般来说,一个正整数可以拆分成若干个正整数的和。例如, 1 = 1, 10 = 1 + 2 + 3 + 4 等。

对于正整数 n 的一种特定拆分,我们称它为“优秀的”,当且仅当在这种拆分下, n 被分解为了若干个不同的 2 的正整数次幂。注意, 一个数 x 能被表示成示成 2 的正整数次幂,当且仅当 x 能通过正整数个 2 相乘在一起得到。

例如, 10 = 8 + 2 = 23 + 21 是一个优秀的拆分。但是, 7 = 4 + 2 + 1 = 22 + 21 + 20 就不是一个优秀的拆分,因为 1 不是 2 的正整数次幂。

现在,给定正整数 n,你需要判断这个数的所有拆分中,是否存在优秀的拆分。 若存在, 请你给出具体的拆分方案。

输入格式
输入文件只有一行,一个正整数 n,代表需要判断的数。
输出格式
如果这个数的所有拆分中,存在优秀的拆分。那么, 你需要从大到小输出这个拆分中的每一个数, 相邻两个数之间用一个空格隔开。 可以证明, 在规定了拆分数字的顺序后, 该拆分方案是唯一的。

若不存在优秀的拆分,输出“-1”(不包含双引号)。

样例输入
6
样例输出
4 2
代码:

#include<bits/stdc++.h>
using namespace std;
int n;
int main()
{
    scanf("%d",&n);
    if(n%2)
    {
        printf("-1\n");
        return 0;
    }
    int m=2;
    while(m<n)m*=2;
    if(m>n)m/=2;
    while(n)
    {
        printf("%d ",m);
        n-=m;
        while(m>n)m/=2;
    }
    return 0;
}

2386: 【入门】分糖果(candy)

题目描述
【题目背景】红太阳幼儿园的小朋友们开始分糖果啦!
【题目描述】红太阳幼儿园有n个小朋友,你是其中之一。保证n≥2。
有一天你在幼儿园的后花园里发现无穷多颗糖果,你打算拿一些糖果回去分给幼儿园的小朋友们。
由于你只是个平平无奇的幼儿园小朋友,所以你的体力有限,至多只能拿R块糖回去。但是拿的太少不够分的,所以你至少要拿L块糖回去。保证n≤L≤R。也就是说,如果你拿了k块糖,那么你需要保证L≤k≤R。如果你拿了k块糖,你将把这k块糖放到篮子里,并要求大家按照如下方案分糖果:只要篮子里有不.少.于.n块糖果,幼儿园的所有n个小朋友(包括你自己)都从篮子中拿走恰.好.一块糖,直到篮子里的糖数量少.于.n块。此时篮子里剩余的糖果均归你所有——这些糖果是作.为.你.搬.糖.果.的.奖.励.。作为幼儿园高质量小朋友,你希望让作.为.你.搬.糖.果.的.奖.励.的糖果数量(而.不.是.你.最.后.获.得.的.总.糖.果.数.量!.)尽可能多;因此你需要写一个程序,依次输入n,L,R,并输出出你最多能获得多少作.为.你.搬.糖.果.的.奖.励.的糖果数量。
输入格式
输入一行,包含三个正整数n,L,R,分别表示小朋友的个数、糖果数量的下界和上界。
输出格式
输出一行一个整数,表示你最多能获得的作.为.你.搬.糖.果.的.奖.励.的糖果数量。
样例输入

7 16 23

样例输出

6

 #include<bits/stdc++.h> 
using namespace std;
int ans;
int main()
{
    int n,l,r;
    scanf("%d%d%d",&n,&l,&r);
    for(int i=l;i<=r;i++){
        ans=max(ans,i%n);
    }    
    printf("%d",ans);
    return 0;
}

2583: 王国比赛(kingdom)

题目描述
智慧之王Kri统治着一座王国。

这天Kri决定举行一场比赛,来检验自己大臣的智慧。

比赛由n道判断题组成,有m位大臣参加。现在你已经知道了所有大臣的答题情况,但尚未拿到答案,于是你决定先行预测。

具体来说,对于第i道题,有x个大臣选对,y个大臣选错(显然有x+y=m),如果x>y,那么你预测这题答案为对,否则为错。为了方便,我们保证m是奇数。

在统计完成后,你拿到了答案,你想知道通过你的预测方式你最后有几道题预测正确。

输入格式
第一行两个正整数n,m,保证m是奇数。

接下来m行,每行n个整数,第i行第j个整数aij代表第i位大臣对第j道题的答案,1表示他选对,0表示他选错。

接下来1行n个整数,表示比赛答案,第i个数b;若为1表示第i道题答案是对,若为0表示答案是错。

输出格式
输出一个整数,表示你最后有几题预测正确。
样例输入

3 3
1 0 1
0 1 1
0 1 0
1 1 1

样例输出

2

代码:

#include <bits/stdc++.h>
using namespace std;
int a[1000];
int main() 
{
    int n,m; 
	cin>>n>>m;
	int x;
	for(int i=0;i<m;i++)
	{
		for(int j=0;j<n;j++)
		{
			cin>>x;
			if (x==1)
			{
				a[j]++;
			}
		}
	}
	int s=0;
	for(int j=0;j<n;j++)
	{
		cin>>x;
		if ((a[j]>m/2) == x)
		{
			s++;
		}
	}
	cout<<s;
    return 0;
}

3194: 乘方(pow)

题目描述
小文同学刚刚接触了信息学竞赛,有一天她遇到了这样一个题:给定正整数 a 和 b,求 ab的值是多少。
a b 即 b 个 a 相乘的值,例如 2 3 即为 3 个 2 相乘,结果为 2 × 2 × 2 = 8。
“简单!”小文心想,同时很快就写出了一份程序,可是测试时却出现了错误。小文很快意识到,她的程序里的变量都是 int 类型的。在大多数机器上,int 类型能表示的最大数为 2 31 − 1 ,因此只要计算结果超过这个数,她的程序就会出现错误。
由于小文刚刚学会编程,她担心使用 int 计算会出现问题。因此她希望你在 a b 的值超过 109时,输出一个 ‐1 进行警示,否则就输出正确的 a b 的值。然而小文还是不知道怎么实现这份程序,因此她想请你帮忙。
输入格式
从文件 pow.in 中读入数据。
输入共一行,两个正整数 a, b 。
输出格式
输出到文件 pow.out 中。
输出共一行,如果 a b 的值不超过 109 ,则输出 a b 的值,否则输出 ‐1 。
样例输入

10 9

样例输出

1000000000

#include<bits/stdc++.h>
using namespace std;
int a,b;
int main(){
	cin>>a>>b;
	long long ans=1;
	if(a==1){
		cout<<1;
		return 0;
	}
	while(b&&ans<=1e9){
		ans*=a;
		b--;
	}
	if(ans>1e9){
		cout<<-1;
		return 0;
	}
	cout<<ans;
	return 0;
}

[题库来自]:(http://c.chengxiaomeng.cn)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值