输入一个英文字母,判断它是大写还是小写。
如果为小写,输出a
;
如果为大写,输出A
。
B
A
B
为大写,所以输出A
。
a
a
a
为小写,所以输出a
。
#include <cstdio>
using namespace std;
int main(int argc, char** argv)
{
char a = getchar();
if('a' <= a && a <= 'z') putchar('a');
else putchar('A');
return 0;
}
给定一个长度为的数组,要求从其中选出个数,使它们的和最小。
()
一行,即最小的和。
5 3
50 100 80 120 80
最小的和是。
210
B
为大写,所以输出A
。
1 1
1000
1000
因为只有一个数,所以最小的和就是。(此注释为笔者所加)
题目要求和最小,其实只要找到数组中最小的个数字的和即可。可以使用<algorithm>
库中的sort()
函数对p
数组进行升序排序,再取前个数字之和作为结果输出。
#include <cstdio>
#include <algorithm>
#define maxn 1005
using namespace std;
int a[maxn];
int main(int argc, char** argv)
{
int n, k, sum = 0;
scanf("%d%d", &n, &k);
for(int i=0; i<n; i++)
scanf("%d", a + i);
sort(a, a + n);
for(int i=0; i<k; i++)
sum += a[i];
printf("%d\n", sum);
return 0;
}
有()只狗,它们的名字分别为:
a
, b
, .., z
, aa
, ab
, .., az
, ba
, bb
, .., bz
, .., za
, zb
, .., zz
, aaa
, aab
, .., aaz
, aba
, abb
, .., abz
, ., zzz
, aaaa
, ..
问题:第只狗的名字是什么?
一行,即第只狗的名字。
样例较多,为了节省文章篇幅,所以直接整合成表格:
输入 | 输出 |
---|---|
2 | b |
27 | aa |
123456789 | jjddja |
其实就是把十进制转换成二十六进制:
#include <cstdio>
#define BASE 26LL
using namespace std;
int main(int argc, char** argv)
{
char s[12];
int cnt = 0;
long long n;
scanf("%lld", &n);
while(n > 0)
{
n --;
s[cnt++] = n % BASE + 'a';
n /= BASE;
}
for(int i=cnt-1; i>=0; i--) putchar(s[i]);
putchar('\n');
return 0;
}
有一个数组。
执行如下个操作:
()
4
1 2 3 4
3
1 2
3 4
2 4
11
12
16
时间 | 数组 |
---|---|
开始 | |
4
1 1 1 1
3
1 2
2 1
3 5
注意:不一定存在列表中。
8
4
4
2
1 2
3
1 100
2 100
100 1000
102
200
2000
可以用数组记录中每个值出现的次数。这里由于题目原因,还需要记录数组每个数之和。
#include <cstdio>
#define maxn 100005
using namespace std;
typedef long long LL;
int cnt[maxn];
LL sum = 0;
inline LL s(const LL& i)
{
return cnt[i] * i;
}
int main(int argc, char** argv)
{
int n, q;
scanf("%d", &n);
for(int i=0; i<n; i++)
{
int t;
scanf("%d", &t);
sum += t;
cnt[t] ++;
}
scanf("%d", &q);
while(q--)
{
int x, y;
scanf("%d%d", &x, &y);
sum -= s(x) + s(y);
cnt[y] += cnt[x];
cnt[x] = 0;
sum += s(y);
printf("%lld\n", sum);
}
return 0;
}