Bài tập xâu - Nhập môn lập trình - Công nghệ thông tin | Trường đại học Hồng Đức

Bài tập xâu - Nhập môn lập trình - Công nghệ thông tin | Trường đại học Hồng Đức được sưu tầm và soạn thảo dưới dạng file PDF để gửi tới các bạn sinh viên cùng tham khảo, ôn tập đầy đủ kiến thức, chuẩn bị cho các buổi học thật tốt. Mời bạn đọc đón xem!

BÀI TẬP XÂU
BÀI25. Chuyển số nhị phân thành số thập phân.
BÀI LÀM
#include <bits/stdc++.h>
using namespace std;
int main(){
string n;
cin>>n;
int sum=0;
int chay =0;
for(int i=n.size()-1;i>=0;i--)
{
if(n[i]=='1') sum+=pow(2,chay);
chay++;
}
cout << "ket qua " << sum;
return 0;
}
BÀI26. Chuyển số thập phân thành số nhị phân.
BÀI LÀM
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int x[100];
int chay=0;
while(n!=0)
{
x[chay]=n%2;
chay++;
n=n/2;
}
for(int i=chay-1;i>=0;i--)
cout <<x[i];
return 0;
}
BÀI 49. Các học viên nhí của Anh ngữ ABC Smart hôm nay lại được học về nguyên âm và phụ
âm. Theo quy ước, người ta có các nguyên âm là a, i, u, e, o; các chữ cái còn lại đều là phụ âm.
Được biết sắp tới Phòng Giáo Dục Thành Phố Thanh Hoá sẽ tổ chức một kỳ thi lập trình để
khảo sát các đội tuyển của các trường Trung Học Sở trong địa bàn. Các bạn học viên nhí
nghĩ ngay ra một bài toán để đố các bạn như sau: Cho một xâu gồm các chữ cái Latinh inST
thường (từ ‘a’ đến ‘z’) và các chữ số (từ ‘0’ đến ‘9’); Theo quy ước thì các chữ số không phải là
nguyên âm và cũng không phải là phụ âm. Hãy đếm số lượng kí tự là phụ âm của xâu trên.ST
Dữ liệu: Vào từ file văn bản gồm:BAI1.INP
+ Dòng đầu tiên số nguyên dương là độ dài của xâu ST ( <= 10
n n
5
);
+ Dòng thứ 2 là xâu .ST
Kết quả: Ghi ra file văn bản là kết quả của đề bàiBAI1.OUT
BAI1.INP BAI1.OUT
14
anhnguabcsmar
t
10
BÀI LÀM
#include <bits/stdc++.h>
using namespace std;
string st;
int n;
int res = 0;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
freopen("BAI1.INP","r", stdin);
freopen("BAI1.OUT","w", stdout);
cin >> n;
cin >> st;
for(int i =0; i<n; i++)
if (st[i]>'9')
if (st[i]!='a'&&st[i]!='i'&&st[i]!='u'&&st[i]!='e'&&st[i]!='o'){
res++;
}
cout << res;
return 0;
}
BÀI 50. Nhập vào một sâu không chứa dấu cách gồm các số các chữ cái in thường hãy
đếm xem sâu có bao nhiêu nguyên âm.
BÀI LÀM
#include <bits/stdc++.h>
using namespace std;
string st;
int n;
int res = 0;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
//freopen("BAI1.INP","r", stdin);
//freopen("BAI1.OUT","w", stdout);
cin >> n;
cin >> st;
for(int i =0; i<n; i++){
if (st[i]=='a'||st[i]=='i'||st[i]=='u'||st[i]=='e'||st[i]=='o')
res++;
}
cout << res;
return 0;
}
BÀI 51. Nhập vào một xâu st gồm các từ, giữa các từ được cách nhau bởi 1 dấu cách hay
nhiều dấu cách. Hãy đếm xem xâu đó có bao nhiêu từ.
BÀI LÀM
#include <bits/stdc++.h>
using namespace std;
string st;
int n;
int res = 0;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
//freopen("BAI1.INP","r", stdin);
//freopen("BAI1.OUT","w", stdout);
getline(cin,st);
n= st.size();
st=st+' ';
for(int i =0; i<n; i++){
if (st[i]!=' '&&st[i+1]==' ')
res++;
}
cout << res;
return 0;
}
Bài 52: XAUDEP
Hôm nay các học viên của Anh ngữ ABC Smart lại được học về nguyên âm phụ âm. Các
chữ cái nguyên âm gồm: ‘a’, ‘e’, ‘i’, ‘o’, ‘u’; Còn các chữ các khác đều phụ âm. Long
một học viên rất thích lập trình, nên anh liền nghĩ ra 1 bài toán để đố các bạn THCS như sau:
Một xâu đẹp là xâu phải chứa các chữ cái nguyên âm, chữ cái phụ âm hoặc chữ số xen kẽ nhau.
Xâu có độ dài 1 thì luôn coi xâu đẹp. Ví dụ: các xâu là xâu đẹp như: “a7bab9a”, “b8e6u”,
“8a”, “b8”, “ab”, “a8”…; các xâu không phải là xâu đẹp: “aa8b”, “a8bau”, “a44”…
Yêu cầu: Cho xâu, các bạn hãy đếm xem có bao nhiêu xâu đẹp.n
Dữ liệu: Vào từ file gồm:XAUDEP.INP
+ Dòng đầu tiên là số nguyên dương
n (n <= 10 );
4
+ dòng tiếp theo, mỗi dòng là một xâu (1 <= độ dài của xâu <= 100)n
Kết quả: Ghi ra file là số lượng xâu đẹp.XAUDEP.OUT
Ví dụ:
XAUDEP.INP XAUDEP.OUT
2
a7bab9a
a44
1
Ràng buộc:
+ Có 50% số điểm tương ứng với n = 1;
+ Có 50% số điểm còn lại không có ràng buộc gì thêm.
BAI LAM
#include <bits/stdc++.h>
using namespace std;
int n;
string st;
int dem =0;
int l;
int a[108];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>st;
l=st.size();
for(int j=0;j<l;j++)
if(st[j]>='0'&&st[j]<='9')
a[j]=1;
else if(st[j]=='a'||st[j]=='e'||st[j]=='i'||st[j]=='u'||st[j]=='o')
a[j]=2;
else a[j]=3;
bool kt=true;
for(int j=0;j<l-1;j++){
if(a[j]==a[j+1])
kt=false;
break;
}
if(kt==true)dem++;
}
cout << dem;
return 0;
}
BÀI 63. Chuyển xâu chữ hoa thành chữ thường có chứa dấu cách
BÀI LÀM
#include <bits/stdc++.h>
using namespace std;
string chuyenhoathanhthuong(string s){
for(int i=0;i<s.length();i++){
if(s[i]>='A'&&s[i]<='Z') s[i]+=32;
}
return s;
}
int main(){
string s;
getline(cin,s);
cout<<"xau chu hoa thanh thuong: ";
cout << chuyenhoathanhthuong(s);
return 0;
}
BÀI 64. Chuyển xâu chữ thường thành chữ hoa có chứa dấu cách
BÀI LÀM
#include <bits/stdc++.h>
using namespace std;
string chuyenthuongthanhhoa(string s){
for(int i=0;i<s.length();i++){
if(s[i]>='a'&&s[i]<='z') s[i]-=32;
}
return s;
}
int main(){
string s;
getline(cin,s);
cout<<"xau chu thuong thanh hoa: ";
cout << chuyenthuongthanhhoa(s);
return 0;
}
BÀI 68. Kiểm tra một sâu có phải là sâu đối xứng
BÀI LÀM
#include <bits/stdc++.h>
using namespace std;
string s;
int main(){
cout<<"nhap vao chuoi s: ";
cin>>s;
string check="";
for(int i=s.length()-1;i>=0;i--){
check+=s[i];
}
if(check==s) cout<<"day la day doi xung";
else cout << "day khong phai day doi xung";
return 0;
}
CÁCH 2
#include <bits/stdc++.h>
using namespace std;
string s;
int main(){
cout<<"nhap vao chuoi s: ";
cin>>s;
bool check=true;
int l=s.length();
for(int i=0;i<s.length()/2;i++){
if(s[i]!=s[l-1-i]){
check=false;
break;
}
}
if(check==true) cout<<"day la day doi xung";
else cout << "day khong phai day doi xung";
return 0;
}
Bài 104. Cho một sâu bất kỳ. Hãy liệt đếm số lần xuất hiện của các phần tử trong
sâu.
BAI5.INP BAI5.OUT
adsasd3243bvAB a 2
d 2
s 2
3 2
2 1
4 1
b 1
v 1
A 1
B 1
Bài làm
#include <bits/stdc++.h>
using namespace std;
map<char, int>m;
string st;
int main() {
getline(cin, st);
int x=st.size();
for(int i=0; i<x;i++) {
m[st[i]]++;
}
for(int i=0; i<x; i++)
if(m[st[i]]!=0){
cout<<st[i]<<" "<<m[st[i]]<<endl;
m[st[i]]=0;}
return 0;
}
Bài 105. Cho một sâu bất kỳ. Hãy xóa đi các kí tự trùng nhau theo trình tự của sâu và đưa
ra sâu mới.
BAI5.INP BAI5.OUT
23ads tr5AcfAgf 43 23ads tr5Acfg4
Bài làm
#include <bits/stdc++.h>
using namespace std;
map<char, int>m;
string st;
int main() {
getline(cin, st);
int x=st.size();
for(int i=0; i<x;i++) {
m[st[i]]++;
}
for(int i=0; i<x; i++)
if(m[st[i]]!=0){
cout<<st[i];
m[st[i]]=0;}
return 0;
}
Bài 105. Cho xâu bất kỳ. Hãy đưa ra xâu có các ký tự xuất hiện 1 lần
BAI5.INP BAI5.OUT
Cddsf Csf
#include <bits/stdc++.h>
using namespace std;
map<char, int>m;
string st;
int main() {
getline(cin, st);
int x=st.size();
for(int i=0; i<x;i++) {
m[st[i]]++;
}
for(int i=0; i<x; i++)
if(m[st[i]]==1){
cout<<st[i];
m[st[i]]=0;}
return 0;
}
Bài 106. Cho một dãy các số nguyên dương. Hãy in ra số lượng các gia trị khác nhau dãy
và in ra số lượng số có tần số xuất hiện nhiều nhất.
BAI5.INP BAI5.OUT
10
1 2 3 4 5 6 7 8 9 6
9 ( trong dãy có 9 số khác nhau)
2 ( số 6 được lặp lại 2 lần)
Bài làm
#include <bits/stdc++.h>
using namespace std;
int a[1000007];
map<int,int> m;
int n;
int dem=0, res =0;
int main() {
cin>>n;
for(int i=1; i<=n;i++) {
cin>>a[i];
m[a[i]]++;
}
for(int i=1; i<=n; i++){
if(m[a[i]]>res) res=m[a[i]] ;
if(m[a[i]]!=0){
dem++;
m[a[i]]=0;
}
}
cout<<dem<<endl<<res;
return 0;
}
Cách 2
#include <bits/stdc++.h>
using namespace std;
int check[10006], a[10006];
int n;
int res =0;
int dem=0;
int tong=0;
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
sort(a, a + n);
for(int i = 0; i<n; i++){
if(a[i+1]-a[i]==0)
dem++;
else dem = 0;
if (res < dem) res = dem;
}
if (res == 0) cout << 0<<" ";
else cout << res+1<<" ";
for(int i=0;i<n;i++)
check[i]=0;
for(int i=0;i<n;i++)
check[a[i]]=1;
for(int i=0;i<n;i++)
if(check[i]==1) tong++;
cout <<tong;
return 0;
}
Cachs 1.
#include <bits/stdc++.h>
using namespace std;
int check[10009], a[10009];
int n;
int res =0;
int dem=0;
int tong=0;
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
sort(a, a + n);
for(int i = 0; i<n; i++){
if(a[i+1]-a[i]==0)
dem++;
else dem = 0;
if (res < dem) res = dem;
}
for(int i=0;i<n;i++)
check[i]=0;
for(int i=0;i<n;i++)
check[a[i]]=1;
for(int i=0;i<n;i++)
if(check[i]==1) tong++;
cout <<tong<<endl;
if (res == 0) cout <<0;
else cout << res+1;
return 0;
}
Bài: Bài Mật khẩu wf
#include <bits/stdc++.h>
#define N 100005
using namespace std;
long long M ,scdong[N],sddong[N];
int cs(long long n) {
int s = 0;
while (n > 0) {
s += n % 10;
n /= 10;
}
return s;
}
int main (){
cin >>M;
if (M==0||M==1) {cout <<M;return 0;}
if (M==2||M==4) {cout <<6;return 0;}
if (M==3){cout <<15;return 0;}
if (M%2==0){
sddong[2] = 2;
for (int j=4;j<=M;j=j+2){
sddong[j]=sddong[j-2]+2*(j-2);
scdong[j]=sddong[j]+2*(j-1);
if(M>=sddong[j]&&M<=scdong[j]) {
long long tcs=0;
for (int k=0; k<=j-1; k++){
tcs=tcs+ cs(sddong[j]+2*k);
}
cout<<tcs;return 0;
}
}
}
else{
sddong[1] = 1;
for (int j=3;j<=M;j=j+2){
sddong[j]=sddong[j-2]+2*(j-2);
scdong[j]=sddong[j]+2*(j-1);
if(M>=sddong[j]&&M<=scdong[j]) {
long long tcs=0;
for (int k=0; k<=j-1; k++){
tcs=tcs+ cs(sddong[j]+2*k);
}
cout<<tcs;return 0;
}
}
}
}
Bài 11. Đếm số từ và ký tự trong sâu.
Bài làm #include <bits/stdc++.h>
#include <conio.h>
using namespace std;
int main()
{
int demkytu=0;
int demtu=1;
cout << "Ban nhap mot cau gom cac chu thuong: " << endl;
char ch='a';
while(ch!='\r')
{
ch=getche();
if(ch==' ')
demtu++;
else
demkytu++;
}
cout << "\n So tu trong cau la = " << demtu << endl;
cout << "\nSo ky tu trong cau la = " << demkytu-1 << endl;
return 0;
}
Bai 34. Bài 1. KC Khoảng cách.lơp 10, đà nẵng 2023
Trên một con đường bố trí sẵn một số bóng đèn. đồ bố trí các bóng đèn trên con
đườngđược biểu diễn bằng một xâu kí tự gồm kí tự chữ cái D đại diện chobóng đèn và giữa hai
kí tự chữcái D có một vài kí tự chữ số biểu diễn cho một số nguyên dương là khoảng cách giữa
hai bóng đènnày (đơn vị mét).
Yêu cầu: xác định khoảng cách (đơn vị mét) giữa bóng đèn đầu tiên và bóng đèn cuối cùng trên
conđường.
Input: nhập một xâu ký tự biểu diễn sơ đồ bố trí bóng đèn.
Output: In ra một số nguyên m theo yêu cầu.
Input Output
D3D2D10D 15
Giới hạn: xâu kí tự nhập từ input có không quá 255 kí tự và số nguyên giữa 2 kí tự D không quá
1000.
giải, ktlt
Duyệt xâu s, lấy từng cụm kí tự số giữa 2 kí tự ‘D’ rồi tính tổng.
Bài làm
#include <bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
long long res=0,num=0;
for(int i=0;i<s.size();i++){
if(s[i]=='D'){
res = res + num;
num=0;
}
else{
num=num*10+(int(s[i]-48));
}
}
cout<<res;
return 0;
}
Bài 37. Tìm số lớn nhất số nhỏ nhất trong xâu, nếu số 0 đứng trước thì xóa đi. Xâu
có độ dài không quá 10 .
5
BAI1.INP BAI1.OUT
06bggff009999vv66rf 6 (dạng xâu)
9999
Bài làm
#include <bits/stdc++.h>
using namespace std;
string s, maxs, mins, x ;
bool bigger(string a, string b){
if(a.size()==b.size()) return(a>b);
return (a.size()> b.size());
}
int main(){
cin>>s;
for(int i=0; i<=s.size(); i++){
if(s[i]>='0'&& s[i]<='9') x+=s[i];
else {
if(x.size()>0){
while(x.size()>1 && x[0]=='0')
x.erase(0,1);//xoa di so 0 dung truoc
if(bigger(x,maxs)||maxs=="") maxs =x;
if(!bigger(x,mins)||mins=="") mins=x;
x="";
}
}
}
cout << mins<< endl <<maxs;
return 0;
}
Bài 37 b. Một mật thư chứa mật mã bĩ ẩn được tạo ra là một xâu kí tự chỉ gồm các chữ số
và các kí tự in thường. Mật mã bí ẩn là số lượng các số nguyên phân biệt xuất hiện trong thư.
Ví dụ: với mật thứa 00023dff23ddd1sd23vgg09gf chứa 3 số nguyên phân biệt 23, 1, 9 nên mật
mã là 3. Hãy lập trình đưa ra mật mã bí ẩn.
+ một xâu độ dài của xâu <=1000 gồm các chữ số các tự in thường. Tất cả các số
nguyên dương trong xâu có nhiều nhất 3 chữ số
BAI1.INP BAI1.OUT
Abc123abc2de3d1
00023dff23ddd1sd23vgg09gf
4
3
Bài làm
#include <bits/stdc++.h>
using namespace std;
long long xauthanhso(string s ){
long long u=0;
for(int i=0;i<s.size();i++){
if(u==0&&s[i]=='0') continue;
u = u*10 + (int(s[i]) - 48);
}
return u;
}
int d[1000];
int main(){
string s, t="";
cin>>s;
for(int i=0;i<s.size();i++){
if('0'<=s[i]&& s[i]<='9') t= t+s[i];
else {
if(t!=""){
long long k= xauthanhso(t);
//cout<<k<<endl;
d[k]++;
}
t="";
}
}
if(t!=""){
long long k=xauthanhso(t);
//cout<<k<<endl;
d[k]++;
}
long long res=0;
for(int i=0;i<1000;i++){
if(d[i]>0) res++;
}
cout << res;
return 0;
}
Bài 37c. Tính tổng các số có trong xâu.
BAI1.INP BAI1.OUT
Acdd12vvf5vvg9 12+5+9=26
Bài làm
#include <bits/stdc++.h>
using namespace std;
int i=0,j,tong=0,t;
string str;
int main(){
cin>>str;
while(i<=str.size()-1)
if(str[i]<='9' && str[i]>='0'){
j=i;
t=0;
while(j<=str.size()-1 && (str[j]<='9' && str[j]>='0')){
t=10*t+(int)str[j]-48;
j++;
}
cout<<t<<"+";
tong+=t;
i=j;
}
else i++;
cout<<"="<<tong;
return 0;
}
Cách 2. Tính tổng các số trong xâu
BAI1.INP BAI1.OUT
Acdd12vvf5vvg9 26
#include <bits/stdc++.h>
using namespace std;
string st;
int sum=0;
int res=0;
int main() {
cin>> st;
int x=st.size();
for(int i=0; i<x;i++) {
if(st[i]>='0'&&st[i]<='9'){
res=res*10+ (st[i]-'0');
}
else {
sum+=res;
res=0;
}
}
if(st[x-1]>='0'&&st[x-1]<='9') sum+=res;
cout<<sum;
return 0;
}
Cách 3.
#include <bits/stdc++.h>
using namespace std;
string st;
int sum=0;
int main() {
cin>> st;
int x=st.size();
for(int i=0; i<x;i++) {
int cnt=0;
while((i<x)&&(st[i]>='0'&&st[i]<='9')){
cnt=cnt*10+ (st[i]-'0');
i++;
}
sum+=cnt;
}
cout<<sum;
return 0;
}
Bài 38. Tìm số lớn nhất trong xâu
BAI1.INP BAI1.OUT
Ccfd55vff99hhgg9999 9999
Bài làm
#include <bits/stdc++.h>
using namespace std;
string st;
int res=-1e9;
int main() {
cin>> st;
int x=st.size();
for(int i=0; i<x;i++) {
int cnt=0;
while((i<x)&&(st[i]>='0'&&st[i]<='9')){
cnt=cnt*10+ (st[i]-'0');
i++;
}
if(res<cnt) res=cnt;
}
cout<<res;
return 0;
}
Bài 38.a. cho xâu không chứa dấu cách gồm các số chữa cái in thường. Hãy tìm số lớn
nhất và bé nhất khác 0 trong xâu. ( kết quả không bị tràn số.)
BAI1.INP BAI1.OUT
12vcfft88nbhh776nnh99999 99999 12
Bài làm
#include <bits/stdc++.h>
using namespace std;
string st;
int b[100002];
int minn=1e9, maxx=-1e9;
int main() {
cin>> st;
int x=st.size();
for(int i=0; i<x;i++) {
int cnt=0;
while((i<x)&&(st[i]>='0'&&st[i]<='9')){
cnt=cnt*10+ (st[i]-'0');
i++;
}
b[i]=cnt;
//cout<<b[i]<<endl;
}
for(int i=1; i<=x;i++){
if(maxx< b[i])maxx=b[i];
if(minn>b[i]&&b[i]!=0) minn=b[i];
}
cout<<maxx<<" "<<minn;
return 0;
}
Bài 38c. Một số nguyên tố được dấu trong một xâu. Hãy tìm số nguyên tố lớn nhất trong
xâu đó. Đảm bảo trong xâu ít nhất 1 số nguyên tốkết quả không bị tràn số.(Hà Nội
năm 2020)
BAI1.INP BAI1.OUT
12vcfft1234nbhh6nnh99999cd19 23
Bài làm
#include <bits/stdc++.h>
using namespace std;
int maxx,cnt;
string st;
bool check(int n){
if (n<2) return false;
for (int i=2;i*i<=n;i++){
if (n%i==0) return false;
}
return true;
}
int main(){
cin >> st;
for(int i=0;i<st.size();i++){
cnt = 0;
if (st[i]>= '0' && st[i]<= '9'){
for(int j= i; j<st.size();j++){
if (st[j] >= '0' && st[j] <= '9'){
cnt = cnt*10 + st[j] - 48;
//cout<<cnt<<endl;
if (check(cnt)){
maxx = max(cnt, maxx);
}
}
else {break;}
}
}
}
cout << maxx;
return 0;
}
Bài 38d. Hai số nguyên tố được dấu trong một xâu. Hãy tìm số nguyên tố lớn nhất
nhất trong xâu.
BAI1.INP BAI1.OUT
12vcfft1234nbhh6nnh99999cd19 23 2
Bài làm
Bài 38. Cho hai số nguyên dương a và b. Tính a và kết quả lấy phần dư cho 100000009.
b
BAI1.INP BAI1.OUT
2 3
5 10
2 1000
8
9765625
30260051
Bài làm
#include <bits/stdc++.h>
#define mod 100000009
using namespace std;
long long binpow(int a, int b){
if(b==0) return 1;
long long res =binpow(a,b/2); //a^(b/2)
if(b%2==0) {
return ((res%mod)*(res%mod))%mod;
}
else {
return (((res%mod)*(res%mod))%mod*(a%mod))%mod;
}
}
int main(){
int a, b;
cin>>a>>b;
cout << binpow(a,b);
return 0;
}
Cách 2
#include <bits/stdc++.h>
#define mod 100000009
using namespace std;
long long binpow2(long long a, int b){
long long ans = 1;
while(b!=0){
if(b%2!=0){
ans*=a;
ans%=mod;
}
a*=a;
a%=mod;
b/=2;
}
return ans;
}
int main(){
//freopen("bai1.inp","r",stdin);
//freopen("bai1.out","w",stdout);
int a, b;
cin>>a>>b;
cout << binpow2(a,b);
return 0;
}
Bài 42. (kiểu bản ghi). Cho N xâu không chứa dấu cách gồm các chữa các số. Mỗi xâu
không dài quá 255 kí tự. Hãy sắp xếp các xâu theo thứ tự tăng dần từ các ký tự số trong các xâu
đó. Nếu tự số trong mỗi xâu bằng nhau thì xâu nào xuất hiện trước được xếp trước. Với
0<N<= 10
4
BAI1.INP BAI1.OUT
5
Sa123456789
Sdd123
123
Dgttr123456ffd788999
12345h
Sdd123
123
12345h
Sa123456789
Dgttr123456ffd788999
Bài làm
#include <bits/stdc++.h>
#define N 10001
using namespace std;
struct xauu{
string st;
int giatri;
int vitri;
};
xauu a[N];
int n;
int tachso(string s){
int layso = 0;
for( auto x:s)
if('0'<= x && x <='9') layso++;
return layso;
}
bool sosanh(xauu X, xauu Y){
return(X.giatri< Y.giatri)||(X.giatri==Y.giatri && X.vitri< Y.vitri);
}
int main(){
cin>>n;
for(int i=1; i<=n; i++){
cin>>a[i].st;
a[i].giatri=tachso(a[i].st);
a[i].vitri=i;
}
sort(a+1,a+n+1,sosanh);
for(int i=1; i<=n;i++)
cout << a[i].st << endl;
return 0;
}
Bài 69. Một xâu chứa đầy đủ các ký tự in thường từ a đến z được gọi xâu pangram. Kiểm
tra xâu nhập vào có phải là xâu pangram hay không.
-Dòng duy nhất là xâu gồm các ký tự in thường không quá 1000 kí tự
- in ra yes nếu là xâu pangram, ngược lai in ra no.
BAI1.INP BAI1.OUT
qwertyuiopasdfghjklzxcvbnm
cvvffddr
yes
no
Bài làm
#include <bits/stdc++.h>
using namespace std;
int pangram( string st){
int cnt[26]={0};
for (int i=0;i<st.size();i++){
cnt[st[i] - 'a']=1;
}
for(int i=0;i<26;i++){
if(cnt[i]==0) return 0;
}
return 1;
}
int main(){
string s;
cin>>s;
if(pangram(s)) cout<<"yes";
else cout<<"no";
return 0;
}
Bài 69.b. Một xâu chứa đầy đủ các tự từ a đến z được gọi xâu pangram.không phân
biệt in hoa hay in thường các tự số. Kiểm tra xâu nhập vào phải xâu pangram hay
không.(không chứa ký đặc biệt).
-Dòng duy nhất là xâu gồm các ký tự in thường không quá 1000 kí tự
- in ra yes nếu là xâu pangram, ngược lai in ra no.
BAI1.INP BAI1.OUT
qwertyuiopasdfghjklzxcvbNM1233
cvvffddr
yes
no
Bài làm. sắp xếp từ a- z và đổi sang in hoa
Cach 1
#include <bits/stdc++.h>
using namespace std;
int pangrams(string s){
int dem = 0;
for(int i=0;i<s.size();i++){
if(s[i]>='a'&&s[i]<='z') s[i]-=32;
}
sort(s.begin(),s.end());
for (int i = 0; i < s.size(); i++) {
if (s[i] != s[i + 1]){
if(s[i]>'9')
dem++;
}
}
if (dem == 26) return true;
else return false;
}
int main(){
string str;
cin>>str;
if(pangrams(str)==true) cout<<"yes";
else cout<<"no";
return 0;
}
Cach2
#include <bits/stdc++.h>
using namespace std;
int pangrams(string s){
int dem = 0;
transform(s.begin(),
s.end(),
s.begin(),
::toupper);
sort(s.begin(), s.end());
for (int i = 0; i < s.size(); i++) {
if (s[i] != s[i + 1]){
if(s[i]>'9')
dem++;
}
}
if (dem == 26) return true;
else return false;
}
int main(){
string str;
cin>>str;
if(pangrams(str)==true) cout<<"yes";
else cout<<"no";
return 0;
}
Bài 69.c. Một xâu chứa đầy đủ các tự từ a đến z được gọi xâu pangram.không phân
biệt in hoa hay in thường. Kiểm tra xâu nhập vào có phải là xâu pangram hay không.
-Dòng duy nhất là xâu gồm các ký tự in thường không quá 1000 kí tự
- in ra yes nếu là xâu pangram, ngược lai in ra no.
BAI1.INP BAI1.OUT
qwertyuiopasdfghjklzxcvbNM
cvvffddr
yes
no
Bai lam
#include <bits/stdc++.h>
using namespace std;
int pangrams(string s){
for(int i=0;i<s.size();i++){
if(s[i]>='a'&&s[i]<='z') s[i]-=32;
}
int cnt[26]={0};
for (int i=0;i<s.size();i++){
cnt[s[i] - 'A']=1;
}
for(int i=0;i<26;i++){
if(cnt[i]==0) return 0;
}
return 1;
}
int main(){
string str;
cin>>str;
if(pangrams(str)==true) cout<<"yes";
else cout<<"no";
return 0;
}
Bài 75. Ghép các xâu.
BAI1.INP BAI1.OUT
3
11
12
33
111233
Bài làm
#include <bits/stdc++.h>
using namespace std;
string a[1000],t,ln;
int n;
int main(){
cin>>n;
for (int i=1;i<=n; i++)
cin>>a[i];
t="";
for (int i=1; i<=n; i++) t=t+a[i];
cout<<t;
return 0;
}
Bài 81. Cho xâu S ban đầu, hãy chuẩn hóa xâu.
– Dòng 1 ghi số nguyên N (1 ≤ N ≤ 1000);
– N dòng tiếp theo mỗi dòng ghi một xâu S (độ dài tối đa 100tự).
Kết quả: gồm N dòng kết quả xâu sau khi chuẩn hóa. Xâu chuẩna không có dấuch
đầu xâu, cuối xâu, giữa 2 từ liền nhauduy nhất 1 dấu cáchkí tự đầu tiên 1 từ viết hoa.
BAI1.INP BAI1.OUT
trUong TRUNG hOC co SO THIeu
cONG
Truong Trung Hoc Co So Thieu Cong
Bài làm
#include <bits/stdc++.h>
using namespace std;
string ch(string s){
for(int i=0;i<s.length();i++){
if(s[i]>='A'&&s[i]<='Z') s[i]+=32;
}
return s;
}
int main(){
string st, s;
getline(cin,st);
s= ch(st);
int n = s.size();
if(s[0]!=' ') s[0]-=32;
for(int i =0; i<n; i++){
if ((s[i]==' ')&&(s[i+1]!=' ')) s[i+1]-=32;
}
cout<<s;
return 0;
}
Bài 84. Cho xâu st độ dài tối đa 255 tự chỉ gồm các chữ cái tiếng Anh in thường
( xâu khác rỗng).
Tìm số lượngc ký tự chỉ xuất hiện đúng 2 lần trong xâu. Nếu khôngthì in ra -1.
BAI1.INP BAI1.OUT
Sdffghdsajklllllll 2
Bài làm
#include <bits/stdc++.h>
using namespace std;
int cnt[256];
int dem;
int main(){
string st;
cin>>st;
for (int i=0;i<st.size();i++){
cnt[st[i]]++;
}
for (int i=0;i<st.size();i++){
if(cnt[st[i]]==2) dem++;
cnt[st[i]]=0;
}
if( dem!=0) cout<<dem;
else cout<<"-1";
return 0;
}
Cach 2
#include <bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
int res1=0;
map<char,int> res;
for(int i=0;i<s.length();i++){
res[s[i]]++;
if(res[s[i]]==2) res1++;
else if(res[s[i]]>2)
res1--,res[s[i]]=-999999;
}
if(res1!=0)cout<<res1;
else cout<<"-1";
}
Cach 3
#include <bits/stdc++.h>
using namespace std;
int main(){
string s;
getline(cin,s);
int dem[26]={0};
for (int i=0;i<s.size();i++){
dem[s[i]-'a']++;
}
int res=0;
for (int i=0;i<26;i++){
if (dem[i]==2) res++;
}
if(res!=0) cout<<res;
else cout<<"-1";
return 0;
}
Bài 100. Đếm số từ hoặc số các số chỉ xuất hiện một lần trong xâu. Với n<10 .
5
BAI1.INP BAI1.OUT
10
binh an hai an aaa bbbb thanh
abccba binh 12345678909988765
6
#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
string a[N];
int n, d;
map<string,int> m;
int dem=0;
int main() {
cin >>n;
for (int i = 1;i<=n ; i++) {
cin >> a[i];
m[a[i]]++;
}
for(int i=1;i<=n ; i++){
if(m[a[i]]==1){
dem++;
m[a[i]]=0;
}
}
cout<<dem<<endl;
return 0;
}
| 1/23

Preview text:

BÀI TẬP XÂU
BÀI25. Chuyển số nhị phân thành số thập phân. BÀI LÀM #include using namespace std; int main(){ string n; cin>>n; int sum=0; int chay =0;
for(int i=n.size()-1;i>=0;i--) {
if(n[i]=='1') sum+=pow(2,chay); chay++; }
cout << "ket qua " << sum; return 0; }
BÀI26. Chuyển số thập phân thành số nhị phân. BÀI LÀM #include using namespace std; int main(){ int n; cin>>n; int x[100]; int chay=0; while(n!=0) { x[chay]=n%2; chay++; n=n/2; } for(int i=chay-1;i>=0;i--) cout < return 0; }
BÀI 49. Các học viên nhí của Anh ngữ ABC Smart hôm nay lại được học về nguyên âm và phụ
âm. Theo quy ước, người ta có các nguyên âm là a, i, u, e, o; các chữ cái còn lại đều là phụ âm.
Được biết sắp tới Phòng Giáo Dục Thành Phố Thanh Hoá sẽ tổ chức một kỳ thi lập trình để
khảo sát các đội tuyển của các trường Trung Học Cơ Sở trong địa bàn. Các bạn học viên nhí
nghĩ ngay ra một bài toán để đố các bạn như sau: Cho một xâu ST gồm các chữ cái Latinh in
thường (từ ‘a’ đến ‘z’) và các chữ số (từ ‘0’ đến ‘9’); Theo quy ước thì các chữ số không phải là
nguyên âm và cũng không phải là phụ âm. Hãy đếm số lượng kí tự là phụ âm của xâu ST trên.
Dữ liệu:
Vào từ file văn bản BAI1.INP gồm:
+ Dòng đầu tiên số nguyên dương n là độ dài của xâu ST (n<= 105);
+ Dòng thứ 2 là xâu ST.
Kết quả: Ghi ra file văn bản BAI1.OUT là kết quả của đề bài BAI1.INP BAI1.OUT 14 10 anhnguabcsmar t BÀI LÀM #include using namespace std; string st; int n; int res = 0; int main(){
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
freopen("BAI1.INP","r", stdin);
freopen("BAI1.OUT","w", stdout); cin >> n; cin >> st;
for(int i =0; i if (st[i]>'9')
if (st[i]!='a'&&st[i]!='i'&&st[i]!='u'&&st[i]!='e'&&st[i]!='o'){ res++; } cout << res; return 0; }
BÀI 50. Nhập vào một sâu không chứa dấu cách gồm các số và các chữ cái in thường hãy
đếm xem sâu có bao nhiêu nguyên âm.
BÀI LÀM #include using namespace std; string st; int n; int res = 0; int main(){
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
//freopen("BAI1.INP","r", stdin);
//freopen("BAI1.OUT","w", stdout); cin >> n; cin >> st;
for(int i =0; i if (st[i]=='a'||st[i]=='i'||st[i]=='u'||st[i]=='e'||st[i]=='o') res++; } cout << res; return 0; }
BÀI 51. Nhập vào một xâu st gồm các từ, giữa các từ được cách nhau bởi 1 dấu cách hay
nhiều dấu cách. Hãy đếm xem xâu đó có bao nhiêu từ.
BÀI LÀM #include using namespace std; string st; int n; int res = 0; int main(){
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
//freopen("BAI1.INP","r", stdin);
//freopen("BAI1.OUT","w", stdout); getline(cin,st); n= st.size(); st=st+' ';
for(int i =0; i if (st[i]!=' '&&st[i+1]==' ') res++; } cout << res; return 0; } Bài 52: XAUDEP
Hôm nay các học viên của Anh ngữ ABC Smart lại được học về nguyên âm và phụ âm. Các
chữ cái là nguyên âm gồm: ‘a’, ‘e’, ‘i’, ‘o’, ‘u’; Còn các chữ các khác đều là phụ âm. Long là
một học viên rất thích lập trình, nên anh liền nghĩ ra 1 bài toán để đố các bạn THCS như sau:
Một xâu đẹp là xâu phải chứa các chữ cái nguyên âm, chữ cái phụ âm hoặc chữ số xen kẽ nhau.
Xâu có độ dài là 1 thì luôn coi là xâu đẹp. Ví dụ: các xâu là xâu đẹp như: “a7bab9a”, “b8e6u”,
“8a”, “b8”, “ab”, “a8”…; các xâu không phải là xâu đẹp: “aa8b”, “a8bau”, “a44”…
Yêu cầu: Cho xâu, các bạn hãy đếm xem có bao nhiêu xâu đẹp. n
Dữ liệu: Vào từ file XAUDEP.INP gồm:
+ Dòng đầu tiên là số nguyên dương n (n <= 104);
+ n dòng tiếp theo, mỗi dòng là một xâu (1 <= độ dài của xâu <= 100)
Kết quả: Ghi ra file XAUDEP.OUT là số lượng xâu đẹp. Ví dụ: XAUDEP.INP XAUDEP.OUT 2 1 a7bab9a a44 Ràng buộc:
+ Có 50% số điểm tương ứng với n = 1;
+ Có 50% số điểm còn lại không có ràng buộc gì thêm. BAI LAM #include using namespace std; int n; string st; int dem =0; int l; int a[108]; int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>st; l=st.size();
for(int j=0;j if(st[j]>='0'&&st[j]<='9') a[j]=1;
else if(st[j]=='a'||st[j]=='e'||st[j]=='i'||st[j]=='u'||st[j]=='o') a[j]=2; else a[j]=3; bool kt=true;
for(int j=0;j if(a[j]==a[j+1]) kt=false; break; } if(kt==true)dem++; } cout << dem; return 0; }
BÀI 63. Chuyển xâu chữ hoa thành chữ thường có chứa dấu cách BÀI LÀM #include using namespace std;
string chuyenhoathanhthuong(string s){
for(int i=0;i if(s[i]>='A'&&s[i]<='Z') s[i]+=32; } return s; } int main(){ string s; getline(cin,s);
cout<<"xau chu hoa thanh thuong: ";
cout << chuyenhoathanhthuong(s); return 0; }
BÀI 64. Chuyển xâu chữ thường thành chữ hoa có chứa dấu cách BÀI LÀM #include using namespace std;
string chuyenthuongthanhhoa(string s){
for(int i=0;i if(s[i]>='a'&&s[i]<='z') s[i]-=32; } return s; } int main(){ string s; getline(cin,s);
cout<<"xau chu thuong thanh hoa: ";
cout << chuyenthuongthanhhoa(s); return 0; }
BÀI 68. Kiểm tra một sâu có phải là sâu đối xứng BÀI LÀM #include using namespace std; string s; int main(){
cout<<"nhap vao chuoi s: "; cin>>s; string check="";
for(int i=s.length()-1;i>=0;i--){ check+=s[i]; }
if(check==s) cout<<"day la day doi xung";
else cout << "day khong phai day doi xung"; return 0; } CÁCH 2 #include using namespace std; string s; int main(){
cout<<"nhap vao chuoi s: "; cin>>s; bool check=true; int l=s.length();
for(int i=0;i if(s[i]!=s[l-1-i]){ check=false; break; } }
if(check==true) cout<<"day la day doi xung";
else cout << "day khong phai day doi xung"; return 0; }
Bài 104. Cho một sâu bất kỳ. Hãy liệt kê và đếm số lần xuất hiện của các phần tử trong sâu. BAI5.INP BAI5.OUT adsasd3243bvAB a 2 d 2 s 2 3 2 2 1 4 1 b 1 v 1 A 1 B 1 Bài làm #include using namespace std; mapm; string st; int main() { getline(cin, st); int x=st.size(); for(int i=0; im[st[i]]++; }
for(int i=0; i if(m[st[i]]!=0){ cout< m[st[i]]=0;} return 0; }
Bài 105. Cho một sâu bất kỳ. Hãy xóa đi các kí tự trùng nhau theo trình tự của sâu và đưa ra sâu mới. BAI5.INP BAI5.OUT 23ads tr5AcfAgf 43 23ads tr5Acfg4 Bài làm #include using namespace std; mapm; string st; int main() { getline(cin, st); int x=st.size(); for(int i=0; i m[st[i]]++; }
for(int i=0; i if(m[st[i]]!=0){ cout< m[st[i]]=0;} return 0; }
Bài 105. Cho xâu bất kỳ. Hãy đưa ra xâu có các ký tự xuất hiện 1 lần BAI5.INP BAI5.OUT Cddsf Csf #include using namespace std; mapm; string st; int main() { getline(cin, st); int x=st.size(); for(int i=0; i m[st[i]]++; }
for(int i=0; i if(m[st[i]]==1){ cout< m[st[i]]=0;} return 0; }
Bài 106. Cho một dãy các số nguyên dương. Hãy in ra số lượng các gia trị khác nhau dãy
và in ra số lượng số có tần số xuất hiện nhiều nhất.
BAI5.INP BAI5.OUT 10
9 ( trong dãy có 9 số khác nhau) 1 2 3 4 5 6 7 8 9 6
2 ( số 6 được lặp lại 2 lần) Bài làm #include using namespace std; int a[1000007]; map m; int n; int dem=0, res =0; int main() { cin>>n; for(int i=1; i<=n;i++) { cin>>a[i]; m[a[i]]++; } for(int i=1; i<=n; i++){
if(m[a[i]]>res) res=m[a[i]] ; if(m[a[i]]!=0){ dem++; m[a[i]]=0; } } cout< return 0; } Cách 2 #include using namespace std; int check[10006], a[10006]; int n; int res =0; int dem=0; int tong=0; int main() { cin >> n;
for (int i = 0; i < n; i++) { cin >> a[i]; } sort(a, a + n);
for(int i = 0; i if(a[i+1]-a[i]==0) dem++; else dem = 0; if (res < dem) res = dem; }
if (res == 0) cout << 0<<" ";
else cout << res+1<<" "; for(int i=0;i check[i]=0; for(int i=0;i check[a[i]]=1;
for(int i=0;i if(check[i]==1) tong++; cout < return 0; } Cachs 1. #include using namespace std; int check[10009], a[10009]; int n; int res =0; int dem=0; int tong=0; int main() { cin >> n;
for (int i = 0; i < n; i++) { cin >> a[i]; } sort(a, a + n);
for(int i = 0; i if(a[i+1]-a[i]==0) dem++; else dem = 0; if (res < dem) res = dem; } for(int i=0;i check[i]=0; for(int i=0;i check[a[i]]=1;
for(int i=0;i if(check[i]==1) tong++;
cout < if (res == 0) cout <<0; else cout << res+1; return 0; } Bài: Bài Mật khẩu wf #include #define N 100005 using namespace std;
long long M ,scdong[N],sddong[N]; int cs(long long n) { int s = 0; while (n > 0) { s += n % 10; n /= 10; } return s; } int main (){ cin >>M;
if (M==0||M==1) {cout < if (M==2||M==4) {cout <<6;return 0;}
if (M==3){cout <<15;return 0;} if (M%2==0){ sddong[2] = 2; for (int j=4;j<=M;j=j+2){
sddong[j]=sddong[j-2]+2*(j-2); scdong[j]=sddong[j]+2*(j-1);
if(M>=sddong[j]&&M<=scdong[j]) { long long tcs=0;
for (int k=0; k<=j-1; k++){ tcs=tcs+ cs(sddong[j]+2*k); } cout< } } } else{ sddong[1] = 1; for (int j=3;j<=M;j=j+2){
sddong[j]=sddong[j-2]+2*(j-2); scdong[j]=sddong[j]+2*(j-1);
if(M>=sddong[j]&&M<=scdong[j]) { long long tcs=0;
for (int k=0; k<=j-1; k++){ tcs=tcs+ cs(sddong[j]+2*k); } cout< } } } }
Bài 11. Đếm số từ và ký tự trong sâu. Bài làm #include #include using namespace std; int main() { int demkytu=0; int demtu=1;
cout << "Ban nhap mot cau gom cac chu thuong: " << endl; char ch='a'; while(ch!='\r') { ch=getche(); if(ch==' ') demtu++; else demkytu++; }
cout << "\n So tu trong cau la = " << demtu << endl;
cout << "\nSo ky tu trong cau la = " << demkytu-1 << endl; return 0; }
Bai 34. Bài 1. KC Khoảng cách.lơp 10, đà nẵng 2023
Trên một con đường có bố trí sẵn một số bóng đèn. Sơ đồ bố trí các bóng đèn trên con
đườngđược biểu diễn bằng một xâu kí tự gồm kí tự chữ cái D đại diện chobóng đèn và giữa hai
kí tự chữcái D có một vài kí tự chữ số biểu diễn cho một số nguyên dương là khoảng cách giữa
hai bóng đènnày (đơn vị mét).
Yêu cầu: xác định khoảng cách (đơn vị mét) giữa bóng đèn đầu tiên và bóng đèn cuối cùng trên conđường.
Input: nhập một xâu ký tự biểu diễn sơ đồ bố trí bóng đèn.
Output: In ra một số nguyên m theo yêu cầu. Input Output D3D2D10D 15
Giới hạn: xâu kí tự nhập từ input có không quá 255 kí tự và số nguyên giữa 2 kí tự D không quá 1000. giải, ktlt
Duyệt xâu s, lấy từng cụm kí tự số giữa 2 kí tự ‘D’ rồi tính tổng. Bài làm #include using namespace std; int main(){ string s; cin>>s; long long res=0,num=0; for(int i=0;i if(s[i]=='D'){ res = res + num; num=0; } else{ num=num*10+(int(s[i]-48)); } } cout< return 0; }
Bài 37. Tìm số lớn nhất và số nhỏ nhất trong xâu, nếu có số 0 đứng trước thì xóa đi. Xâu
có độ dài không quá 10 5 .
BAI1.INP BAI1.OUT 06bggff009999vv66rf 6 (dạng xâu) 9999 Bài làm #include using namespace std; string s, maxs, mins, x ;
bool bigger(string a, string b){
if(a.size()==b.size()) return(a>b);
return (a.size()> b.size()); } int main(){ cin>>s;
for(int i=0; i<=s.size(); i++){
if(s[i]>='0'&& s[i]<='9') x+=s[i]; else { if(x.size()>0){
while(x.size()>1 && x[0]=='0')
x.erase(0,1);//xoa di so 0 dung truoc
if(bigger(x,maxs)||maxs=="") maxs =x;
if(!bigger(x,mins)||mins=="") mins=x; x=""; } } }
cout << mins<< endl < return 0; }
Bài 37 b. Một mật thư chứa mật mã bĩ ẩn được tạo ra là một xâu kí tự chỉ gồm các chữ số
và các kí tự
in thường. Mật mã bí ẩn là số lượng các số nguyên phân biệt xuất hiện trong thư.
Ví dụ: với mật thứa 00023dff23ddd1sd23vgg09gf chứa 3 số nguyên phân biệt 23, 1, 9 nên mật
mã là 3. Hãy lập trình đưa ra mật mã bí ẩn.
+ một xâu có độ dài của xâu <=1000 gồm các chữ số và các kí tự in thường. Tất cả các số
nguyên dương trong xâu có nhiều nhất 3 chữ số BAI1.INP BAI1.OUT Abc123abc2de3d1 4 00023dff23ddd1sd23vgg09gf 3 Bài làm #include using namespace std;
long long xauthanhso(string s ){ long long u=0;
for(int i=0;i if(u==0&&s[i]=='0') continue; u = u*10 + (int(s[i]) - 48); } return u; } int d[1000]; int main(){ string s, t=""; cin>>s;
for(int i=0;i if('0'<=s[i]&& s[i]<='9') t= t+s[i]; else { if(t!=""){ long long k= xauthanhso(t); //cout< d[k]++; } t=""; } } if(t!=""){ long long k=xauthanhso(t); //cout< d[k]++; } long long res=0; for(int i=0;i<1000;i++){ if(d[i]>0) res++; } cout << res; return 0; }
Bài 37c. Tính tổng các số có trong xâu. BAI1.INP BAI1.OUT Acdd12vvf5vvg9 12+5+9=26 Bài làm #include using namespace std; int i=0,j,tong=0,t; string str; int main(){ cin>>str; while(i<=str.size()-1)
if(str[i]<='9' && str[i]>='0'){ j=i; t=0;
while(j<=str.size()-1 && (str[j]<='9' && str[j]>='0')){ t=10*t+(int)str[j]-48; j++; } cout< tong+=t; i=j; } else i++; cout<<"="< return 0; }
Cách 2. Tính tổng các số trong xâu BAI1.INP BAI1.OUT Acdd12vvf5vvg9 26 #include using namespace std; string st; int sum=0; int res=0; int main() { cin>> st; int x=st.size();
for(int i=0; i if(st[i]>='0'&&st[i]<='9'){ res=res*10+ (st[i]-'0'); } else { sum+=res; res=0; } }
if(st[x-1]>='0'&&st[x-1]<='9') sum+=res; cout< return 0; } Cách 3. #include using namespace std; string st; int sum=0; int main() { cin>> st; int x=st.size(); for(int i=0; i int cnt=0;
while((i='0'&&st[i]<='9')){ cnt=cnt*10+ (st[i]-'0'); i++; } sum+=cnt; } cout< return 0; }
Bài 38. Tìm số lớn nhất trong xâu BAI1.INP BAI1.OUT Ccfd55vff99hhgg9999 9999 Bài làm #include using namespace std; string st; int res=-1e9; int main() { cin>> st; int x=st.size(); for(int i=0; i int cnt=0;
while((i='0'&&st[i]<='9')){ cnt=cnt*10+ (st[i]-'0'); i++; } if(res } cout< return 0; }
Bài 38.a. cho xâu không chứa dấu cách gồm các số và chữa cái in thường. Hãy tìm số lớn
nhất và bé nhất khác 0 trong xâu. ( kết quả không bị tràn số.)
BAI1.INP BAI1.OUT 12vcfft88nbhh776nnh99999 99999 12 Bài làm #include using namespace std; string st; int b[100002]; int minn=1e9, maxx=-1e9; int main() { cin>> st; int x=st.size(); for(int i=0; i int cnt=0;
while((i='0'&&st[i]<='9')){ cnt=cnt*10+ (st[i]-'0'); i++; } b[i]=cnt; //cout< } for(int i=1; i<=x;i++){ if(maxx< b[i])maxx=b[i];
if(minn>b[i]&&b[i]!=0) minn=b[i]; } cout< return 0; }
Bài 38c. Một số nguyên tố được dấu trong một xâu. Hãy tìm số nguyên tố lớn nhất trong
xâu đó. Đảm bảo trong xâu có ít nhất 1 số nguyên tố và kết quả không bị tràn số.(Hà Nội năm 2020)
BAI1.INP BAI1.OUT 12vcfft1234nbhh6nnh99999cd19 23 Bài làm #include using namespace std; int maxx,cnt; string st; bool check(int n){ if (n<2) return false; for (int i=2;i*i<=n;i++){ if (n%i==0) return false; } return true; } int main(){ cin >> st; for(int i=0;i cnt = 0;
if (st[i]>= '0' && st[i]<= '9'){
for(int j= i; j if (st[j] >= '0' && st[j] <= '9'){ cnt = cnt*10 + st[j] - 48; //cout< if (check(cnt)){ maxx = max(cnt, maxx); } } else {break;} } } } cout << maxx; return 0; }
Bài 38d. Hai số nguyên tố được dấu trong một xâu. Hãy tìm số nguyên tố lớn nhất và bé nhất trong xâu. BAI1.INP BAI1.OUT 12vcfft1234nbhh6nnh99999cd19 23 2 Bài làm
Bài 38. Cho hai số nguyên dương a và b. Tính a b và kết quả lấy phần dư cho 100000009. BAI1.INP BAI1.OUT 2 3 8 5 10 9765625 2 1000 30260051 Bài làm #include #define mod 100000009 using namespace std;
long long binpow(int a, int b){ if(b==0) return 1;
long long res =binpow(a,b/2); //a^(b/2) if(b%2==0) {
return ((res%mod)*(res%mod))%mod; } else {
return (((res%mod)*(res%mod))%mod*(a%mod))%mod; } } int main(){ int a, b; cin>>a>>b; cout << binpow(a,b); return 0; } Cách 2 #include #define mod 100000009 using namespace std;
long long binpow2(long long a, int b){ long long ans = 1; while(b!=0){ if(b%2!=0){ ans*=a; ans%=mod; } a*=a; a%=mod; b/=2; } return ans; } int main(){
//freopen("bai1.inp","r",stdin);
//freopen("bai1.out","w",stdout); int a, b; cin>>a>>b; cout << binpow2(a,b); return 0; }
Bài 42. (kiểu bản ghi). Cho N xâu không chứa dấu cách gồm các chữa và các số. Mỗi xâu
không dài quá 255 kí tự. Hãy sắp xếp các xâu theo thứ tự tăng dần từ các ký tự số trong các xâu
đó. Nếu ký tự số trong mỗi xâu mà bằng nhau thì xâu nào xuất hiện trước được xếp trước. Với 0BAI1.INP BAI1.OUT 5 Sdd123 Sa123456789 123 Sdd123 12345h 123 Sa123456789 Dgttr123456ffd788999 Dgttr123456ffd788999 12345h Bài làm #include #define N 10001 using namespace std; struct xauu{ string st; int giatri; int vitri; }; xauu a[N]; int n; int tachso(string s){ int layso = 0; for( auto x:s)
if('0'<= x && x <='9') layso++; return layso; } bool sosanh(xauu X, xauu Y){
return(X.giatri< Y.giatri)||(X.giatri==Y.giatri && X.vitri< Y.vitri); } int main(){ cin>>n; for(int i=1; i<=n; i++){ cin>>a[i].st; a[i].giatri=tachso(a[i].st); a[i].vitri=i; } sort(a+1,a+n+1,sosanh); for(int i=1; i<=n;i++)
cout << a[i].st << endl; return 0; }
Bài 69. Một xâu chứa đầy đủ các ký tự in thường từ a đến z được gọi xâu pangram. Kiểm
tra xâu nhập vào có phải là xâu pangram hay không.
-Dòng duy nhất là xâu gồm các ký tự in thường không quá 1000 kí tự
- in ra yes nếu là xâu pangram, ngược lai in ra no. BAI1.INP BAI1.OUT qwertyuiopasdfghjklzxcvbnm yes cvvffddr no Bài làm #include using namespace std; int pangram( string st){ int cnt[26]={0};
for (int i=0;i cnt[st[i] - 'a']=1; } for(int i=0;i<26;i++){ if(cnt[i]==0) return 0; } return 1; } int main(){ string s; cin>>s;
if(pangram(s)) cout<<"yes"; else cout<<"no"; return 0; }
Bài 69.b. Một xâu chứa đầy đủ các ký tự từ a đến z được gọi xâu pangram.không phân
biệt
in hoa hay in thường và các ký tự số. Kiểm tra xâu nhập vào có phải là xâu pangram hay
không.(không chứa ký đặc biệt).
-Dòng duy nhất là xâu gồm các ký tự in thường không quá 1000 kí tự
- in ra yes nếu là xâu pangram, ngược lai in ra no. BAI1.INP BAI1.OUT
qwertyuiopasdfghjklzxcvbNM1233 yes cvvffddr no
Bài làm. sắp xếp từ a- z và đổi sang in hoa Cach 1 #include using namespace std; int pangrams(string s){ int dem = 0;
for(int i=0;i if(s[i]>='a'&&s[i]<='z') s[i]-=32; } sort(s.begin(),s.end());
for (int i = 0; i < s.size(); i++) { if (s[i] != s[i + 1]){ if(s[i]>'9') dem++; } } if (dem == 26) return true; else return false; } int main(){ string str; cin>>str;
if(pangrams(str)==true) cout<<"yes"; else cout<<"no"; return 0; } Cach2 #include using namespace std; int pangrams(string s){ int dem = 0; transform(s.begin(), s.end(), s.begin(), ::toupper); sort(s.begin(), s.end());
for (int i = 0; i < s.size(); i++) { if (s[i] != s[i + 1]){ if(s[i]>'9') dem++; } } if (dem == 26) return true; else return false; } int main(){ string str; cin>>str;
if(pangrams(str)==true) cout<<"yes"; else cout<<"no"; return 0; }
Bài 69.c. Một xâu chứa đầy đủ các ký tự từ a đến z được gọi xâu pangram.không phân
biệt
in hoa hay in thường. Kiểm tra xâu nhập vào có phải là xâu pangram hay không.
-Dòng duy nhất là xâu gồm các ký tự in thường không quá 1000 kí tự
- in ra yes nếu là xâu pangram, ngược lai in ra no. BAI1.INP BAI1.OUT qwertyuiopasdfghjklzxcvbNM yes cvvffddr no Bai lam #include using namespace std; int pangrams(string s){
for(int i=0;i if(s[i]>='a'&&s[i]<='z') s[i]-=32; } int cnt[26]={0};
for (int i=0;i cnt[s[i] - 'A']=1; } for(int i=0;i<26;i++){ if(cnt[i]==0) return 0; } return 1; } int main(){ string str; cin>>str;
if(pangrams(str)==true) cout<<"yes"; else cout<<"no"; return 0; } Bài 75. Ghép các xâu. BAI1.INP BAI1.OUT 3 111233 11 12 33 Bài làm #include using namespace std; string a[1000],t,ln; int n; int main(){ cin>>n; for (int i=1;i<=n; i++) cin>>a[i]; t="";
for (int i=1; i<=n; i++) t=t+a[i]; cout<return 0; }
Bài 81. Cho xâu S ban đầu, hãy chuẩn hóa xâu.
– Dòng 1 ghi số nguyên N (1 ≤ N ≤ 1000);
– N dòng tiếp theo mỗi dòng ghi một xâu S (độ dài tối đa 100 kí tự).
Kết quả: gồm N dòng là kết quả xâu sau khi chuẩn hóa. Xâu chuẩn hóa là không có dấu cách
đầu xâu, cuối xâu, giữa 2 từ liền nhau có duy nhất 1 dấu cách và kí tự đầu tiên 1 từ viết hoa. BAI1.INP BAI1.OUT
trUong TRUNG hOC co SO THIeu Truong Trung Hoc Co So Thieu Cong cONG Bài làm #include using namespace std; string ch(string s){
for(int i=0;i if(s[i]>='A'&&s[i]<='Z') s[i]+=32; } return s; } int main(){ string st, s; getline(cin,st); s= ch(st); int n = s.size(); if(s[0]!=' ') s[0]-=32;
for(int i =0; i if ((s[i]==' ')&&(s[i+1]!=' ')) s[i+1]-=32; } cout< return 0; }
Bài 84. Cho xâu st có độ dài tối đa 255 ký tự chỉ gồm các chữ cái tiếng Anh in thường ( xâu khác rỗng).
Tìm số lượng các ký tự chỉ xuất hiện đúng 2 lần trong xâu. Nếu không có thì in ra -1. BAI1.INP BAI1.OUT Sdffghdsajklllllll 2 Bài làm #include using namespace std; int cnt[256]; int dem; int main(){ string st; cin>>st; for (int i=0;i cnt[st[i]]++; }
for (int i=0;i if(cnt[st[i]]==2) dem++; cnt[st[i]]=0; }
if( dem!=0) cout< else cout<<"-1"; return 0; } Cach 2 #include using namespace std; int main(){ string s; cin>>s; int res1=0; map res; for(int i=0;i res[s[i]]++; if(res[s[i]]==2) res1++; else if(res[s[i]]>2) res1--,res[s[i]]=-999999; }
if(res1!=0)cout< else cout<<"-1"; } Cach 3 #include using namespace std; int main(){ string s; getline(cin,s); int dem[26]={0}; for (int i=0;idem[s[i]-'a']++; } int res=0; for (int i=0;i<26;i++){ if (dem[i]==2) res++; }
if(res!=0) cout<else cout<<"-1"; return 0; }
Bài 100. Đếm số từ hoặc số các số chỉ xuất hiện một lần trong xâu. Với n<10 5 . BAI1.INP BAI1.OUT 10 6 binh an hai an aaa bbbb thanh abccba binh 12345678909988765 #include using namespace std; const int N = 100005; string a[N]; int n, d; map m; int dem=0; int main() { cin >>n;
for (int i = 1;i<=n ; i++) { cin >> a[i]; m[a[i]]++; } for(int i=1;i<=n ; i++){ if(m[a[i]]==1){ dem++; m[a[i]]=0; } } cout< return 0; }