Hãy nhập câu hỏi của bạn vào đây, nếu là tài khoản VIP, bạn sẽ được ưu tiên trả lời.
Dưới đây là một ví dụ về cách giải quyết bài toán này bằng ngôn ngữ Pascal:
function isPalindrome(s: string): boolean; var i, n: integer; begin n := Length(s); for i := 1 to n div 2 do begin if s[i] <> s[n - i + 1] then begin Result := false; Exit; end; end; Result := true; end; function countSuperPalindromes(s: string): integer; var i, j, n: integer; subStr: string; begin n := Length(s); Result := 0; // Đếm số xâu con đối xứng for i := 1 to n do begin subStr := ''; for j := i to n do begin subStr := subStr + s[j]; if isPalindrome(subStr) then Inc(Result); end; end; // Đếm số xâu con siêu đối xứng for i := 1 to n - 1 do begin subStr := ''; for j := i to n do begin subStr := subStr + s[j]; if isPalindrome(subStr) then Inc(Result); end; end; end; var s: string; begin s := 'ababcb'; writeln(countSuperPalindromes(s)); end.Kết quả của ví dụ trên sẽ là 3, tương ứng với 3 xâu con siêu đối xứng của xâu "ababcb" là "aba", "bcb", và "ababcb".
Lưu ý rằng đây chỉ là một cách giải quyết bài toán và có thể tồn tại các cách giải khác.
program abcdef;
uses Crt;
var
k, lowerLimit, upperLimit, i, j, reversed, temp, remainder: integer;
isPrime, isPalindrome: boolean;
begin
clrscr;
write('Nhap so chu so k (1<=k<=9): ');
readln(k);
lowerLimit := 1;
for i := 1 to k - 1 do
lowerLimit := lowerLimit * 10;
upperLimit := lowerLimit * 10 - 1;
writeln('Cac so nguyen to doi xung co ', k, ' chu so la:');
for i := lowerLimit to upperLimit do
begin
// Kiểm tra số nguyên tố
isPrime := True;
if i < 2 then
isPrime := False
else
for j := 2 to trunc(sqrt(i)) do
if i mod j = 0 then
beginisPrime := False;break;end;
// Kiểm tra số đối xứng
if isPrime then
begin
reversed := 0;
temp := i;
while temp <> 0 dobeginremainder := temp mod 10;
reversed := reversed * 10 + remainder;
temp := temp div 10;
end;
isPalindrome := (i = reversed);
if isPalindrome then
writeln(i);
end;
end;
readln;
end.
#include<bits/stdc++.h>
using namespace std;
int main(){
long long i,dem[1000],d;
string s;
cin >>s;
for(i=0;i<s.size();i++)
dem[s[i]]++;
d=0;
for(i=97;i<=122;i++)
if(dem[i]%2==1)
d++;
if(d>0)
cout<<d-1;
else
cout<<0;
return 0;
}
Đếm số lần xuất hiện của các kí tự 'a'..'z' trong xâu S. Dễ thấy với các kí tự có số lần xuất hiện là chẵn, ta có thể xếp một nửa kí tự đó sang 2 bên thỏa mãn tính chất đối xứng. Đối với kí tự có số lần xuất hiện là lẻ, ta làm tương tự và đưa kí tự còn lại vào trung tâm. Như vậy, để xâu sau khi xóa đối xứng thì chỉ có duy nhất một kí tự có số lần xuất hiện lẻ nên ta sẽ xóa các kí tự lẻ đó, chỉ để lại 1 hoặc 0 cái cuối cùng.
code tham khảo:
int main()
{
string s;
cin >> s;
vector<int> fre(256, 0);
for (char c : s) fre[c]++;
int res = 0;
for (int x : fre) res += (x % 2 == 1);
cout << res - (res > 0);
return 0;
}
uses crt;
var n,i,dem:integer;
{----------------ham-kiem-tra-so-nguyen-to---------------------------}
function ktnt(x:integer):boolean;
var kt:boolean;
i:integer;
begin
kt:=true;
for i:=2 to trunc(sqrt(x)) do
if x mod i=0 then kt:=false;
if kt=true then ktnt:=true
else ktnt:=false;
end;
{-----------------chuong-trinh-chinh-----------------------}
begin
clrscr;
write('Nhap n='); readln(n);
dem:=0;
for i:=2 to n do
if (n mod i=0) and (ktnt(i)=true) then inc(dem);
writeln(dem);
readln;
end.
uses crt;
var st,st1:string;
i,d,kt:integer;
begin
clrscr;
write('Nhap xau:'); readln(st);
d:=length(st);
kt:=0;
for i:=1 to d do
if st[i]<>st[d-i+1] then kt:=1;
if kt=0 then writeln('Day la xau doi xung')
else begin
st1:='';
for i:=d downto 1 do
st1:=st1+st[i];
writeln('Xau dao cua xau ',st,' la: ',st1);
end;
readln;
end.
Uses crt;
var st: string;
function KT (xau: string): boolean;
var i, dem: integer;
begin
dem:=0;
for i:= 1 to length(st) div 2 do
if xau<>xau[length(xau)-i+1] then inc(dem);
if dem<>0 then KT:=False else KT:=True;
end;
begin
clrscr;
write ('Nhap so co do dai khong qua 100 chu so: '); readln (st);
if length(st)>100 then
begin
write ('Nhap khong hop le! An Enter va chay lai!');
readln; exit;
end;
if KT(st)=True then write ('Day la so doi xung!') else write ('Day la so khong doi xung!');
readln
end.
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
int n;
std::cout << "Enter the number of integers (n < 10^5): ";
std::cin >> n;
std::vector<int> numbers(n); std::cout << "Enter " << n << " integers: "; for (int i = 0; i < n; ++i) { std::cin >> numbers[i]; } int sumOfOdd = 0; for (int i = 0; i < n; ++i) { if (numbers[i] % 2 != 0) { sumOfOdd += numbers[i]; } } std::sort(numbers.begin(), numbers.end()); std::cout << "Sum of odd integers: " << sumOfOdd << std::endl; std::cout << "Sorted sequence: "; for (int i = 0; i < n; ++i) { std::cout << numbers[i] << " "; } std::cout << std::endl; return 0;
}
```
program dem_so_doi_xung;
var
n, i, j, count: longint;
s: string;
function doi_xung(s: string): boolean;
var
i: longint;
begin
for i := 1 to length(s) div 2 do
if s[i] <> s[length(s) - i + 1] then
begin
doi_xung := false;
exit;
end;
doi_xung := true;
end;
function doi_xung_dang_non(s: string): boolean;
var
i: longint;
begin
for i := 1 to length(s) div 2 do
if not((s[i] = '1') or (s[i] = '0') or (s[i] = '8')) or (s[length(s) - i + 1] <> s[i]) then
begin
doi_xung_dang_non := false;
exit;
end;
doi_xung_dang_non := true;
end;
begin
write('Nhap n: ');
readln(n);
count := 0;
for i := 1 to n do
begin
str(i, s);
if doi_xung(s) and doi_xung_dang_non(s) then
inc(count);
end;
writeln('So luong so doi xung dang non la: ', count);
readln;
end.