如果你仍然再用二指禅打字,那我建议你重新学习打字,这样你打字会更快,感觉更舒适和愉快。
有很多网站教授正确的打字。下图描述了基本原理: 用同一手指按压颜色相同的键。黄色键需要用小指按压,蓝色的用无名指,绿色的用中指,红色的用食指。
另外,左手按键盘的左侧(从左侧的5、T、G、B键开始)右手按压右侧(从右侧的键6、Y、H、N开始)。拇指负责空格键。
图片描述的键盘是美式键盘。
现在,给出一段长度为 len(1≤len≤50) 的字符串,请你计算如果正确打出这个字符串,每个手指敲击键盘的次数。
输入格式:
输入为一行,一个由大写字母、数字和特殊符号组成的字符串(不包括空格,不需要管图片中未显示的按键)。
输出格式:
输出8行,表示左手小指、无名指、中指、食指以及右手食指、中指、无名指、小指敲击键盘的次数。
#include <iostream>
#include <string>
using namespace std;
char fingers[8][10] = {
{ '`', '1', 'Q', 'A', 'Z', '\0' },
{ '2', 'W', 'S', 'X', '\0' },
{ '3', 'E', 'D', 'C', '\0' },
{ '4', '5', 'R', 'T', 'F', 'G', 'V', 'B', '\0' },
{ '6', '7', 'Y', 'U', 'H', 'J', 'N', 'M', '\0' },
{ '8', 'I', 'K', ',', '\0' },
{ '9', 'O', 'L', '.', '\0' },
{ '0', 'P', ';', '/', '-', '[', '\'', '=', ']', '\0' }
};
size_t press_num[8] = { 0 };
int main() {
bool is_find;
string str;
cin >> str;
for (size_t i = 0; i < str.size(); i++) {
is_find = false;
for (size_t j = 0; j < 8; j++) {
size_t k = 0;
while (fingers[j][k]) {
if (str[i] == fingers[j][k]) {
press_num[j]++;
is_find = true;
}
if (is_find) break;
k++;
}
if (is_find) break;
}
}
for (size_t i = 0; i < 8; i++) cout << press_num[i] << endl;
return 0;
}
有 N 根完全相同的香肠, 现在要平均分给 M 个客人。 问最少需要切几刀才能将其平均分给客人(不能多个香肠一起切)。
输入格式:
两个整数 N(1≤N≤105) 和 M(1≤M≤105)
输出格式:
一个整数,表示要切的刀数
输入样例:
在这里给出一组输入。例如:
2 6
输出样例:
在这里给出相应的输出。例如:
4
#include <iostream>
using namespace std;
size_t great_common_division(size_t s_1, size_t s_2) {
if (s_2 == 0) return 0;
size_t temp;
while (s_2 != 0) {
temp = s_1 % s_2;
s_1 = s_2;
s_2 = temp;
}
return s_1;
}
int main() {
size_t n, m;
cin >> n >> m;
n = n % m;
if (n == 0)
cout << 0;
else{
size_t gcd = great_common_division(m, n);
n /= gcd;
m /= gcd;
cout << (m - 1) * gcd;
}
return 0;
}
学校的礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办。小刘的工作就是安排学校礼堂的活动,每个时间最多安排一个活动。现在小刘有一些活动计划的时间表,他想尽可能的安排更多的活动,请问他该如何安排。
输入格式:
第一行是一个整型数m(m<100)表示共有m组测试数据。
每组测试数据的第一行是一个整数n(1<n<10000)表示该测试数据共有n个活动。
随后的n行,每行有两个正整数Bi,Ei(0<=Bi,Ei<10000),分别表示第i个活动的起始与结束时间(Bi<=Ei)
输出格式:
对于每一组输入,输出最多能够安排的活动数量。
每组的输出占一行
输入样例:
在这里给出一组输入。例如:
2
2
1 10
10 11
3
1 10
9 11
11 20
输出样例:
在这里给出相应的输出。例如:
#include<bits/stdc++.h>
using namespace std;
int m;
struct activ
{
int start;
int end;
};
bool cmp(activ a, activ b)
{
if(a.end<b.end)return 1;
else return 0;
}
activ mem[10010];
int main()
{
cin>>m;
while(m--)
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
int x,y;
cin>>x>>y;
mem[i].start=x;
mem[i].end=y;
}
sort(mem,mem+n,cmp);
int now=mem[0].end,ans=1;
for(int i=1;i<n;i++)
{
if(now<=mem[i].start)
{
ans++;
now=mem[i].end;
}
}
cout<<ans<<endl;
}
system("pause");
return 0;
}
传说二战时X国收到了上帝的一串密码,只有解开密码,才能阻止战争的继续进行,世界才会恢复和平。解开密码的第一道工序就是解压缩密码,上帝对于连续的若干个相同的子串"X"会压缩为"[DX]"的形式(D是一个整数且1<=D<=99),比如说字符串"CBCBCBCB"就压缩为"[4CB]"或者"[2[2CB]]",类似于后面这种压缩之后再压缩的称为二重压缩。如果是"[2[2[2CB]]]"则是三重的。现在我们给你上帝发送的密码,请你对其进行解压缩。
输入格式:
一个字符串。
输出格式:
一个字符串。
输入样例:
在这里给出一组输入。例如:
AC[3FUN]
输出样例:
在这里给出相应的输出。例如:
ACFUNFUNFUN
【数据范围】
解压后的字符串长度在 20000 以内,最多只有十重压缩。保证只包含数字、大写字母、[
和 ]
。
#include <iostream>
using namespace std;
string read_string() {
int num;
string str, sub_str;
char c;
while (cin >> c) {
if (c == '[') {
cin >> num;
sub_str = read_string();
while (num--)str += sub_str;
}
else {
if (c == ']') {
return str;
}
str += c;
}
}
return str;
}
int main() {
cout << read_string();
return 0;
}
恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏。
首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。
然后,让这 n 位大臣排成一排,国王站在队伍的最前面。
排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是:
排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果。
国王不希望某一个大臣获得特别多的奖赏,所以他想请你帮他重新安排一下队伍的顺序,使得获得奖赏最多的大臣,所获奖赏尽可能的少。
注意,国王的位置始终在队伍的最前面。
输入格式:
第一行包含一个整数 n(1≤n≤1000),表示大臣的人数。
第二行包含两个整数 a (0<a)和 b(b<10000),之间用一个空格隔开,分别表示国王左手和右手上的整数。
接下来 n 行,每行包含两个整数 a 和 b,之间用一个空格隔开,分别表示每个大臣左手和右手上的整数。
输出格式:
输出只有一行,包含一个整数,表示重新排列后的队伍中获奖赏最多的大臣所获得的金币数。
输入样例:
在这里给出一组输入。例如:
3
1 1
2 3
7 4
4 6
输出样例:
在这里给出相应的输出。例如:
#include <iostream>
#include <algorithm>
#include <iomanip>
//#include <fstream>//Debug
using namespace std;
const size_t bits = 10;//1e10进制
const int64_t mod_num = 10000000000;//1e10
struct person {
int left;
int right;
};
person queue[1001];
int64_t num[2][10000] = { {1},{1} };//10000 * bits位
int64_t max_num[10000] = { 0 };//2^63 - 1 = 9 223 372 036 854 775 807
int max_len = 0;
//int max_i;//Debug
int main() {
//ifstream ifs("C:\\Users\\dell\\Downloads\\P1080_9.in", ios::in);//Debug
int n, highest = 0;
cin >> n;
//ifs >> n;//Debug
for (int i = 0; i <= n; i++)
cin >> queue[i].left >> queue[i].right;
//ifs >> queue[i].left >> queue[i].right;//Debug
//ifs.close();//Debug
sort(queue + 1, queue + n + 1, [](person p_1, person p_2) {
return p_1.left * p_1.right < p_2.left * p_2.right;
});
for (int i = 1; i <= n; i++) {
//if (i == 1000) system("pause");//Debug
num[(i + 1) % 2][0] = int64_t(queue[i - 1].left) * num[i % 2][0];
int j = 1;
while (j <= highest + 1)
{
num[(i + 1) % 2][j] = int64_t(queue[i - 1].left) * num[i % 2][j];
num[(i + 1) % 2][j] += num[(i + 1) % 2][j - 1] / mod_num;
num[(i + 1) % 2][j - 1] %= mod_num;
j++;
}
while (j > 0 && num[(i + 1) % 2][j] == 0) j--;
highest = j;
int z = j;
int64_t upper = 0, lower = 0;
while (z >= 0) {
upper = (num[(i + 1) % 2][z] + lower) / int64_t(queue[i].right);
lower = (num[(i + 1) % 2][z] + lower) % int64_t(queue[i].right) * mod_num;
if (upper > max_num[z]) {
max_len = j;
//max_i = i;//Debug
lower = 0;
while (j >= 0) {
upper = (num[(i + 1) % 2][j] + lower) / int64_t(queue[i].right);
lower = (num[(i + 1) % 2][j] + lower) % int64_t(queue[i].right) * mod_num;
max_num[j] = upper;
j--;
}
break;
}
else if (upper == max_num[z]) {
z--;
continue;
}
else break;
}
}
//cout << max_i << endl;//Debug
cout << max_num[max_len];
while (--max_len >= 0) cout << setiosflags(ios::right) << setfill('0') << setw(bits) << max_num[max_len];
}