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)