Download as pdf or txt
Download as pdf or txt
You are on page 1of 19

http://hpcode.

pro/
Câu 1.
Cho xâu 𝑠. Hãy cho biết trong xâu 𝑠 có những ký tự chữ số nào?
Dữ liệu vào: Từ tệp 𝑏𝑎𝑖𝑎. 𝑖𝑛𝑝 chứa xâu 𝑠
Kết quả: Ghi vào tệp 𝑏𝑎𝑖𝑎. 𝑜𝑢𝑡 các ký tự chữ số trong xâu 𝑠 theo thứ tự nhập vào.
Ví dụ:
baia.inp baia.out
ab12cd45 1245
Chương trình tham khảo:
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("baia.inp","r",stdin);
freopen("baia.out","w",stdout);
string s;
getline(cin,s);
for(int i=0;i<s.length();i++)
if(s[i]>='0' and s[i]<='9') cout<<s[i];
return 0;
}
http://hpcode.pro/
Câu 2.

Cho xâu 𝑠 chỉ gồm hai loại ký tự ′𝑎′ hoặc ′𝑏′. Hãy cho biết 𝑠 có phải là xâu đẹp hay
không? Biết rằng xâu đẹp là xâu có số lượng ký tự ′𝑎′ bằng số lượng ký tự ′𝑏′.
Dữ liệu vào: Từ tệp 𝑥𝑎𝑢𝑑𝑒𝑝. 𝑖𝑛𝑝 chứa xâu 𝑠
Kết quả: Ghi vào tệp 𝑥𝑎𝑢𝑑𝑒𝑝. 𝑜𝑢𝑡. Nếu 𝑠 là xâu đẹp thì ghi 𝑦𝑒𝑠, ngược lại ghi 𝑛𝑜
Ví dụ:
xaudep.inp xaudep.out xaudep.inp xaudep.out
abab yes aba no
Chương trình tham khảo:
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("xaudep.inp","r",stdin);
freopen("xaudep.out","w",stdout);
string s;
getline(cin,s);
int da=0,db=0;
for(int i=0;i<s.length();i++)
{
da+=(s[i]=='a');
db+=(s[i]=='b');
}
if(da==db) cout<<"yes"; else cout<<"no";
return 0;
}
http://hpcode.pro/
Câu 3.
Cho xâu 𝑠. Hãy cho biết trong xâu 𝑠 có những ký tự chữ cái in thường nào?
Dữ liệu vào: Từ tệp 𝑏𝑎𝑖𝑎. 𝑖𝑛𝑝 chứa xâu 𝑠.
Kết quả: Ghi vào tệp 𝑏𝑎𝑖𝑎. 𝑜𝑢𝑡 các ký tự chữ cái in thường trong xâu 𝑠 theo thứ tự
nhập vào.
Ví dụ:
baia.inp baia.out
Ab34cd bcd
Chương trình tham khảo:
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("baia.inp","r",stdin);
freopen("baia.out","w",stdout);
string s;
getline(cin,s);
for(int i=0;i<s.length();i++)
if(s[i]>='a' and s[i]<='z') cout<<s[i];
return 0;
}
http://hpcode.pro/
Câu 4.

Cho xâu 𝑠 chỉ bao gồm hai loại ký tự ′𝑎′ hoặc ′𝑏′. Hãy cho biết 𝑠 có phải là xâu đẹp hay
không? Biết rằng xâu đẹp là xâu có số lượng ký tự ′𝑎′ và số lượng ký tự ′𝑏′ là một số chẵn.
Dữ liệu vào: Từ tệp 𝑥𝑎𝑢𝑑𝑒𝑝. 𝑖𝑛𝑝 chứa xâu 𝑠
Kết quả: Ghi vào tệp 𝑥𝑎𝑢𝑑𝑒𝑝. 𝑜𝑢𝑡. Nếu 𝑠 là xâu đẹp thì ghi "𝑦𝑒𝑠", ngược lại ghi "𝑛𝑜"
Ví dụ:
xaudep.inp xaudep.out xaudep.inp xaudep.out
abab yes aba no
Chương trình tham khảo:
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("xaudep.inp","r",stdin);
freopen("xaudep.out","w",stdout);
string s;
getline(cin,s);
int da=0,db=0;
for(int i=0;i<s.length();i++)
{
da+=(s[i]=='a');
db+=(s[i]=='b');
}
if(da%2==0 and db%2==0) cout<<"yes"; else cout<<"no";
return 0;
}
http://hpcode.pro/
Câu 5.
Cho xâu 𝑠. Hãy cho biết trong xâu 𝑠 có bao nhiêu ký tự chữ số?
Dữ liệu vào: Từ tệp 𝑏𝑎𝑖𝑎. 𝑖𝑛𝑝 chứa xâu 𝑠
Kết quả: Ghi vào tệp 𝑏𝑎𝑖𝑎. 𝑜𝑢𝑡 số lượng các ký tự chữ số trong xâu 𝑠.
Ví dụ:
baia.inp baia.out
ab12cd34 4
Chương trình tham khảo:
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("baia.inp","r",stdin);
freopen("baia.out","w",stdout);
string s;
getline(cin,s);
int d=0;
for(int i=0;i<s.length();i++)
d+=(s[i]>='0' and s[i]<='9');
cout<<d;
return 0;
}
http://hpcode.pro/
Câu 6.
Cho xâu 𝑠 chỉ gồm hai loại ký tự ′𝑎′ hoặc ′𝑏′. Biết rằng xâu đẹp là xâu mà các ký tự 𝑎
và 𝑏 đứng xen kẽ nhau. Ví dụ các xâu sau là xâu đẹp "𝑎𝑏𝑎𝑏𝑎𝑏𝑎", "𝑏𝑎", "𝑏𝑎𝑏",…Các xâu
sau không phải là xâu đẹp "𝑎𝑏𝑏𝑎", "𝑏𝑎𝑏𝑏𝑎𝑎",…Xâu chỉ bao gồm 1 ký tự cũng là xâu đẹp.
Yêu cầu: Hãy thực hiện xóa một số ký tự từ xâu 𝑠 để nhận được xâu đẹp sao cho số
lượng ký tự phải xóa là ít nhất.
Dữ liệu vào: Từ tệp 𝑥𝑎𝑢𝑑𝑒𝑝. 𝑖𝑛𝑝 chứa xâu 𝑠
Kết quả: Ghi vào tệp 𝑥𝑎𝑢𝑑𝑒𝑝. 𝑜𝑢𝑡 xâu 𝑠 là xâu đẹp nhận được sau khi xóa một số ký
tự trong xâu.
Ví dụ:
xaudep.inp xaudep.out
abaab abab
Chương trình tham khảo:
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("xaudep.inp","r",stdin);
freopen("xaudep.out","w",stdout);
string s;
getline(cin,s);
while((int)s.find("aa")!=-1)
s.erase(s.find("aa"),1);
while((int)s.find("bb")!=-1)
s.erase(s.find("bb"),1);
cout<<s;
return 0;
}
http://hpcode.pro/
Câu 7.
Cho xâu 𝑠. Hãy cho biết trong xâu 𝑠 có bao nhiêu ký tự chữ cái in thường?
Dữ liệu vào: Từ tệp 𝑏𝑎𝑖𝑎. 𝑖𝑛𝑝 chứa xâu 𝑠.
Kết quả: Ghi vào tệp 𝑏𝑎𝑖𝑎. 𝑜𝑢𝑡 số lượng ký tự chữ cái in thường trong xâu 𝑠.
Ví dụ:
baia.inp baia.out
ab12d3 3
Chương trình tham khảo:
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("baia.inp","r",stdin);
freopen("baia.out","w",stdout);
string s;
getline(cin,s);
int d=0;
for(int i=0;i<s.length();i++)
d+=(s[i]>='a' and s[i]<='z');
cout<<d;
return 0;
}
http://hpcode.pro/
Câu 8.
Cho xâu 𝑠 chỉ gồm hai loại ký tự ′𝑎′ hoặc ′𝑏′. Biết rằng xâu đẹp là xâu mà trong xâu có
không quá 2 ký tự ′𝑎′ đứng liên tiếp nhau. Ví dụ các xâu sau là xâu đẹp "𝑎𝑏𝑏𝑏𝑎𝑏",
"𝑎𝑏𝑎𝑎𝑏",…Các xâu sau không phải là xâu đẹp "𝑎𝑎𝑎𝑎𝑎𝑎𝑎", "𝑏𝑎𝑎𝑎𝑏",…
Yêu cầu: Hãy thực hiện xóa một số ký tự từ xâu 𝑠 để nhận được xâu đẹp sao cho số
lượng ký tự phải xóa là ít nhất.
Dữ liệu vào: Từ tệp 𝑥𝑎𝑢𝑑𝑒𝑝. 𝑖𝑛𝑝 chứa xâu 𝑠
Kết quả: Ghi vào tệp 𝑥𝑎𝑢𝑑𝑒𝑝. 𝑜𝑢𝑡 xâu 𝑠 là xâu đẹp nhận được sau khi xóa một số ký
tự trong xâu.
Ví dụ:
xaudep.inp xaudep.out
abaaab abaab
Chương trình tham khảo:
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("xaudep.inp","r",stdin);
freopen("xaudep.out","w",stdout);
string s;
getline(cin,s);
while((int)s.find("aaa")!=-1)
s.erase(s.find("aaa"),1);
cout<<s;
return 0;
}
http://hpcode.pro/
Câu 9.
Cho xâu 𝑠. Hãy cho biết trong xâu 𝑠 có bao nhiêu ký tự chữ cái in hoa?
Dữ liệu vào: Từ tệp 𝑏𝑎𝑖𝑎. 𝑖𝑛𝑝 chứa xâu 𝑠.
Kết quả: Ghi vào tệp 𝑏𝑎𝑖𝑎. 𝑜𝑢𝑡 số lượng ký tự chữ cái in hoa trong xâu.
Ví dụ:
baia.inp baia.out
aB12cd3 1
Chương trình tham khảo:
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("baia.inp","r",stdin);
freopen("baia.out","w",stdout);
string s;
getline(cin,s);
int d=0;
for(int i=0;i<s.length();i++)
d+=(s[i]>='A' and s[i]<='Z');
cout<<d;
return 0;
}
http://hpcode.pro/
Câu 10.
Cho xâu 𝑠 chỉ gồm hai loại ký tự ′𝑎′ hoặc ′𝑏′. Biết rằng xâu đẹp là xâu mà các ký tự 𝑎
và 𝑏 đứng xen kẽ nhau. Ví dụ các xâu sau là xâu đẹp "𝑎𝑏𝑎𝑏𝑎𝑏𝑎", "𝑏𝑎", "𝑏𝑎𝑏",…Các xâu
sau không phải là xâu đẹp "𝑎𝑏𝑏𝑎", "𝑏𝑎𝑏𝑏𝑎𝑎",…Xâu chỉ bao gồm 1 ký tự cũng là xâu đẹp.
Yêu cầu: Hãy thực hiện chèn một số ký tự vào xâu 𝑠 để nhận được xâu đẹp sao cho số
lượng ký tự chèn vào là ít nhất.
Dữ liệu vào: Từ tệp 𝑥𝑎𝑢𝑑𝑒𝑝. 𝑖𝑛𝑝 chứa xâu 𝑠
Kết quả: Ghi vào tệp 𝑥𝑎𝑢𝑑𝑒𝑝. 𝑜𝑢𝑡 xâu 𝑠 là xâu đẹp nhận được sau khi chèn một số ký
vào trong xâu.
Ví dụ:
xaudep.inp xaudep.out
abaab ababab
Chương trình tham khảo:
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("xaudep.inp","r",stdin);
freopen("xaudep.out","w",stdout);
string s;
getline(cin,s);
while((int)s.find("aa")!=-1)
s.insert(s.find("aa")+1,"b");
while((int)s.find("bb")!=-1)
s.insert(s.find("bb")+1,"a");
cout<<s;
return 0;
}
http://hpcode.pro/
Câu 11.

Trong xâu, từ là một dãy các ký tự liên tiếp không chứa ký tự trắng, hai từ liên tiếp
nhau được ngăn cách nhau bằng ký tự trắng.
Yêu cầu: Hãy cho biết từ đầu tiên trong xâu 𝑠.
Dữ liệu vào: Từ tệp 𝑐𝑎𝑢𝑏. 𝑖𝑛𝑝 chứa xâu 𝑠. Biết rằng trong 𝑠 không có ký tự trắng
đứng đầu xâu; xâu 𝑠 có ít nhất hai từ.
Kết quả: Ghi vào tệp 𝑐𝑎𝑢𝑏. 𝑜𝑢𝑡 kết quả tìm được.
Ví dụ:
Caub.inp Caub.inp
mot hia ab mot
Chương trình tham khảo:
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("caub.inp","r",stdin);
freopen("caub.out","w",stdout);
string s;
getline(cin,s);
cout<<s.substr(0,s.find(" "));
return 0;
}
http://hpcode.pro/
Câu 12.

Trong xâu, từ là một dãy các ký tự liên tiếp không chứa ký tự trắng, hai từ liên tiếp
nhau được ngăn cách nhau bằng ký tự trắng.
Yêu cầu: Hãy cho biết từ cuối cùng trong xâu 𝑠.
Dữ liệu vào: Từ tệp 𝑐𝑎𝑢𝑏. 𝑖𝑛𝑝 chứa xâu 𝑠. Biết rằng trong 𝑠 không có ký tự trắng
đứng đầu xâu, giữa xâu; xâu 𝑠 có đúng hai từ.
Kết quả: Ghi vào tệp 𝑐𝑎𝑢𝑏. 𝑜𝑢𝑡 kết quả tìm được.
Ví dụ:
Caub.inp Caub.inp
mto hia hia
Chương trình tham khảo:
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("caub.inp","r",stdin);
freopen("caub.out","w",stdout);
string s;
getline(cin,s);
while(s[s.length()-1]==' ') s.erase(s.length()-1,1);
cout<<s.substr(s.find(" ")+1);
return 0;
}
http://hpcode.pro/
Câu 13.
Cho xâu 𝑠. Hãy cho biết trong xâu 𝑠 có những ký tự chữ cái in hoa nào?
Dữ liệu vào: Từ tệp 𝑐𝑎𝑢𝑎. 𝑖𝑛𝑝 chứa xâu 𝑠.
Kết quả: Ghi vào tệp 𝑐𝑎𝑢𝑎. 𝑜𝑢𝑡 các ký tự chữ cái in hoa trong xâu 𝑠 theo thứ tự nhập
vào.
Ví dụ:
caua.inp caua.out
aB12Cd3 BC
Chương trình tham khảo:
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("caua.inp","r",stdin);
freopen("caua.out","w",stdout);
string s;
getline(cin,s);
for(int i=0;i<s.length();i++)
if(s[i]>='A' and s[i]<='Z') cout<<s[i];
return 0;
}
http://hpcode.pro/
Câu 14.
Một xâu được gọi là đối xứng nếu đọc xâu từ trái qua phải cho kết quả như đọc từ
phải qua phải. Ví dụ các xâu sau là đối xứng "𝑎𝑏𝑏𝑎", "12321", "𝑟𝑒𝑑𝑓𝑑𝑒𝑟",…; Các xâu
sau không phải đối xứng "abbbaa", "12312", …
Cho xâu 𝑠 có 𝑛 ký tự. Hãy thêm đúng 𝑛 ký tự bất kỳ vào cuối xâu 𝑠 sao cho 𝑠 nhận
được là đối xứng.
Dữ liệu vào: Từ tệp 𝑐𝑎𝑢𝑏. 𝑖𝑛𝑝
+ Dòng đầu tiên ghi số nguyên dương 𝑛(𝑛 ≤ 1000).
+ Dòng thứ hai ghi 𝑛 ký tự của xâu 𝑠
Kết quả: Ghi vào tệp 𝑐𝑎𝑢𝑏. 𝑜𝑢𝑡 xâu 𝑠 đối xứng sau khi thêm 𝑛 ký tự bất kỳ.
Ví dụ:
caub.inp caub.out
abc abccba
Chương trình tham khảo:
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("caub.inp","r",stdin);
freopen("caub.out","w",stdout);
string s;
getline(cin,s);
int last=s.length()-1;
for(int i=last;i>=0;i--) s=s+s[i];
cout<<s;
return 0;
}
http://hpcode.pro/
Câu 15.
Xâu đẹp là xâu mà không có hai ký tự liên tiếp nhau có cùng giá trị với nhau. Ví dụ các
xâu sau là xâu đẹp "𝑎𝑏𝑎𝑏𝑎𝑏𝑎𝑏𝑎𝑏", "𝑡𝑎𝑙𝑎𝑥𝑎𝑢𝑑𝑒𝑝"; Các xâu sau không phải là xâu đẹp
"𝑎𝑏𝒂𝒂𝑏𝑎𝑏𝑎", "𝑡𝑎𝑙𝑎𝑥𝑎𝑢𝑑𝑒𝒑𝒑".
Yêu cầu: Cho xâu 𝑠. Hãy cho biết 𝑠 có phải là xâu đẹp hay không?
Dữ liệu vào: từ tệp 𝑐𝑎𝑢𝑏. 𝑖𝑛𝑝 chứa xâu 𝑠.
Kết quả: ghi vào tệp 𝑐𝑎𝑢𝑏. 𝑜𝑢𝑡. Nếu 𝑠 là xâu đẹp thì ghi "𝑦𝑒𝑠", ngược lại ghi "𝑛𝑜"
Ví dụ:
caub.inp caub.out Caub.inp Caub.out
ababab yes ababaa no
Chương trình tham khảo:
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("caub.inp","r",stdin);
freopen("caub.out","w",stdout);
string s;
getline(cin,s);
string check="yes";
for(int i=1;i<s.length();i++)
if(s[i-1]==s[i]) check="no";
cout<<check;
return 0;
}
http://hpcode.pro/
Câu 16.
Cho xâu 𝑠. Hãy cho biết các ký tự ở vị trí lẻ trong xâu?
Dữ liệu vào: Từ tệp 𝑣𝑖𝑡𝑟𝑖𝑙𝑒. 𝑖𝑛𝑝 chứa xâu 𝑠
Kết quả: Ghi vào tệp 𝑣𝑖𝑡𝑟𝑖𝑙𝑒. 𝑜𝑢𝑡 các ký tự ở vị trí lẻ trong xâu 𝑠.
Ví dụ:
vitrile.inp vitrile.out
ab12cd45 b2d5
Chương trình tham khảo:
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("vitrile.inp","r",stdin);
freopen("vitrile.out","w",stdout);
string s;
getline(cin,s);
for(int i=1;i<s.length();i+=2) cout<<s[i];
return 0;
}
http://hpcode.pro/
Câu 17.
Tom và Jerry chơi với nhau 𝑛 ván cờ caro, kết thúc mỗi ván cờ hai bạn đều ghi lại kết
quả với ký hiệu:
+ Nếu Tom thắng thì ghi chữ T
+ Nếu Jerry thắng thì ghi chữ J
+ Nếu hòa thì ghi chữ D
Sau khi kết thúc 𝑛 ván cờ, Tom và Jerry tự hỏi mỗi bạn được bao nhiêu điểm. Biết rằng
người chiến thắng trong 1 ván cờ được 3 điểm, người thua hoặc hòa trong 1 ván cờ không
được điểm nào.
Dữ liệu vào: Từ tệp 𝑇𝑜𝑚𝐽𝑒𝑟𝑟𝑦. 𝑖𝑛𝑝
+ Dòng đầu tiên ghi số nguyên dương 𝑛 (𝑛 ≤ 1000)
+ Dòng thứ hai ghi lần lượt 𝑛 ký tự, mỗi ký tự chỉ thuộc một trong ba loại là J hoặc T
hoặc D.
Kết quả: ghi vào tệp 𝑇𝑜𝑚𝐽𝑒𝑟𝑟𝑦. 𝑜𝑢𝑡
+ Dòng đầu cho biết số điểm của Tom
+ Dòng thứ hai cho biết số điểm của Jerry.
tomjerry.inp tomjerry.out
6 6
TTDJJJ 9
Chương trình tham khảo:
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("tomjerry.inp","r",stdin);
freopen("tomjerry.out","w",stdout);
int n; cin>>n;
string s; getline(cin,s);getline(cin,s);
int dt=0,dj=0;
for(int i=0;i<n;i++)
{
dt+=(s[i]=='T');
dj+=(s[i]=='J');
}
cout<<dt*3<<endl<<dj*3;
return 0;
}
http://hpcode.pro/
Câu 18.

Cho số nguyên 𝑘 và xâu 𝑠. Hãy di chuyển 𝑘 ký tự đầu tiên của xâu về cuối xâu.
Dữ liệu vào: Từ tệp 𝑑𝑖𝑐ℎ𝑢𝑦𝑒𝑛. 𝑖𝑛𝑝
+ Dòng đầu ghi số nguyên 𝑘
+ Dòng thứ hai ghi xâu 𝑠. Biết rằng 0 < 𝑘 < độ dài xâu 𝑠.
Kết quả: Ghi vào tệp 𝑑𝑖𝑐ℎ𝑢𝑦𝑒𝑛. 𝑜𝑢𝑡 xâu 𝑠 sau khi di chuyển 𝑘 ký tự đầu tiên về cuối
cùng
Ví dụ:
dichuyen.inp dichuyen.out
2 abcd
cdab
Chương trình tham khảo:
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("dichuyen.inp","r",stdin);
freopen("dichuyen.out","w",stdout);
int k; cin>>k;
string s; getline(cin,s);getline(cin,s);
for(int i=1;i<=k;i++)
{
s=s+s[0];
s.erase(0,1);
}
cout<<s;
return 0;
}
http://hpcode.pro/
Câu 19.
Tom và Jerry chơi với nhau 𝑛 ván cờ caro, kết thúc mỗi ván cờ hai bạn đều ghi lại kết
quả với ký hiệu:
+ Nếu Tom thắng thì ghi chữ T
+ Nếu Jerry thắng thì ghi chữ J
+ Nếu hòa thì ghi chữ D
Sau khi kết thúc 𝑛 ván cờ, Tom và Jerry tự hỏi mỗi bạn thắng bao nhiêu ván.
Dữ liệu vào: Từ tệp 𝑇𝑜𝑚𝐽𝑒𝑟𝑟𝑦. 𝑖𝑛𝑝
+ Dòng đầu tiên ghi số nguyên dương 𝑛 (𝑛 ≤ 1000)
+ Dòng thứ hai ghi lần lượt 𝑛 ký tự, mỗi ký tự chỉ thuộc một trong ba loại là J hoặc T
hoặc D.
Kết quả: ghi vào tệp 𝑇𝑜𝑚𝐽𝑒𝑟𝑟𝑦. 𝑜𝑢𝑡
+ Dòng đầu cho biết số lượng ván cờ mà Tom thắng
+ Dòng thứ hai cho biết số lượng ván cờ mà Jerry thắng.
tomjerry.inp tomjerry.out
6 2
TTDJJJ 3
Chương trình tham khảo:
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("tomjerry.inp","r",stdin);
freopen("tomjerry.out","w",stdout);
int n; cin>>n;
string s; getline(cin,s);getline(cin,s);
int dt=0,dj=0;
for(int i=0;i<n;i++){
dt+=(s[i]=='T');
dj+=(s[i]=='J');
}
cout<<dt<<endl<<dj;
return 0;
}

You might also like