报数
有n 个小朋友做游戏,他们的编号分别是 1,2,3...n。他们按照编号从小到大依次顺时针围成一个圆圈,从第一个小朋友开始从 1 报数,依次按照顺时针方向报数(加一),报 m 的人会离开队伍,然后下一个小朋友会继续从 1 开始报数,直到只剩一个小朋友为止。
输入格式
第一行输入两个整数,n,m。(1 \leq n,m \leq 10001≤n,m≤1000)
输出格式
输出最后一个小朋友的编号,占一行。
样例输入复制
10 5样例输出复制
3#include <iostream>
#include <queue>
using namespace std;
int main(){
int n,m;
cin >> n >> m;
queue<int> q;
for(int i = 0;i < n ;i++){
q.push(i);
}
int now = 0;
while(q.size() > 1){
int x = q.front();
q.pop();
now++;
if(now == m){
now = 0;
}
else{
q.push(x);
}
}
cout << q.front()+1;
return 0;
}括号匹配
蒜头君在纸上写了一个串,只包含'('和')'。一个'('能唯一匹配一个')',但是一个匹配的'('必须出现在')'之前。请判断蒜头君写的字符串能否括号完全匹配,如果能,输出配对的括号的位置(匹配的括号不可以交叉,只能嵌套)。
输入格式
一行输入一个字符串只含有'('和')',输入的字符串长度不大于 50000。
输出格式
如果输入括号不能匹配,输出一行"No",否则输出一行"Yes",接下里若干行每行输出 2 个整数,用空格隔开,表示所有匹配对的括号的位置(下标从 1 开始)。你可以按照任意顺序输出。
本题答案不唯一,符合要求的答案均正确
样例输入1复制
(())样例输出1复制
Yes
1 4
2 3样例输入2复制
()()样例输出2复制
Yes
1 2
3 4#include <cstdio>
#include <stack>
#include <iostream>
using namespace std;
int main(){
string a;
cin >> a;
int n = a.size();
stack<int> s;
bool flag = true;
int x[50000],y[50000],len = 0;
for(int i = 0;i < n;i++){
if(a[i] == '('){
s.push(i+1);
}
else{
if(s.size() == 0){
flag = false;
break;
}
else{
x[len] = s.top();
s.pop();
y[len] = i + 1;
len++;
}
}
}
if(s.size()){
flag = false;
}
if(flag){
cout << "Yes" << endl;
for(int i = 0;i < len;i++){
cout << x[i] << " " << y[i] << endl;
}
}
else{
cout << "No" << endl;
}
return 0;
}网页跳转
蒜头君每天都在用一款名为“蒜厂浏览器”的软件。在这个浏览器中,一共三种操作:打开页面、回退和前进。它们的功能如下:
- 打开页面:在地址栏中输入网址,并跳转到网址对应的页面;
- 回退:返回到上一次访问的页面;
- 前进:返回到上次回退前的页面,如果上一次操作是打开页面,那么将无法前进。
现在,蒜头君打开浏览器,进行了一系列操作,你需要输出他每次操作后所在页面的网址。
输入格式
第一行输入一个整数 n(0 < n \le 100000)n(0<n≤100000),表示蒜头君的操作次数。
接下来一共 nn 行,每行首先输入一个字符串,如果是VISIT,后面接着输入一个不含有空格和换行的网址(网址长度小于 100100),表示蒜头君在浏览器地址栏中输入的网址;如果是BACK,表示蒜头君点击了回退按钮;如果是FORWARD,表示蒜头君点击了前进按钮。
输出格式
对于每次操作,如果蒜头君能操作成功,输出蒜头君操作之后的网址,否则输出Ignore。假设蒜头君输入的所有网址都是合法的。
样例输入复制
10
VISIT https://www.jisuanke.com/course/476
VISIT https://www.taobao.com/
BACK
BACK
FORWARD
FORWARD
BACK
VISIT https://www.jisuanke.com/course/429
FORWARD
BACK样例输出复制
https://www.jisuanke.com/course/476
https://www.taobao.com/
https://www.jisuanke.com/course/476
Ignore
https://www.taobao.com/
Ignore
https://www.jisuanke.com/course/476
https://www.jisuanke.com/course/429
Ignore
https://www.jisuanke.com/course/476
#include <cstdio>
#include <iostream>
#include <stack>
#include <cstring>
using namespace std;
int main(){
int n;
string op,wb;
cin >> n;
stack<string> s1,s2;
while(n--){
cin >> op ;
if(op[0] == 'V'){
cin >> wb;
s1.push(wb);
cout << s1.top() << endl;
while(!s2.empty()){
s2.pop();
}
}
else if(op[0] == 'B' && s1.size() > 1) {
s2.push(s1.top());
s1.pop();
cout << s1.top() << endl;
}
else if(op[0] == 'F' && s2.size()){
s1.push(s2.top());
s2.pop();
cout << s1.top() << endl;
}
else {
cout << "Ignore" << endl;
}
}
return 0;
}