REPALIND - Xâu đối xứng hoàn hảo
Xem dạng PDF
Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, PyPy, Python, Ruby, Rust, Scratch, Swift
Một xâu được gọi là xâu đối xứng nếu đọc xâu đó từ trái sang phải hoặc đọc từ phải sang trái đều như nhau.
Ví dụ:
aba,xyyx,zzlà xâu đối xứng.abc,xyzy,contestkhông phải là xâu đối xứng.
Cho xâu ~s~ chỉ gồm các kí tự in thường và số nguyên dương ~k~. Gọi xâu ~t~ là xâu thu được bằng cách viết xâu ~s~ lặp lại liên tiếp ~k~ lần. Hãy cho biết xâu ~t~ có phải là xâu đối xứng hay không.
Input
- Dòng đầu tiên gồm số nguyên ~T\ (1 ≤ T ≤ 20)~ - số bộ dữ liệu vào;
- ~T~ nhóm dòng tiếp theo, mỗi nhóm dòng mô tả một bộ dữ liệu vào gồm hai dòng:
- Dòng thứ nhất gồm xâu ~s~ có độ dài không vượt quá ~5000~;
- Dòng thứ hai gồm số nguyên ~k\ (1 ≤ k ≤ 10^{18})~.
Output
- Với mỗi bộ dữ liệu vào, nếu xâu t thu được là xâu đối xứng thì in ra
YES. Ngược lại, in raNO.
Sample
Input #1
3
aba
3
ccdd
2
freecontest
1
Output #1
YES
NO
NO
Hint
- Với bộ dữ liệu vào thứ nhất, ta có ~t =~
abaabaabalà một xâu đối xứng. - Với bộ dữ liệu vào thứ hai, ta có ~t =~
ccddccddkhông phải là một xâu đối xứng. - Với bộ dữ liệu vào thứ ba, ta có ~t =~
freecontestkhông phải là một xâu đối xứng.
Problem source: Kc97ble - Free Contest
Bình luận
include<bits/stdc++.h>
using namespace std; int n,m,k,cnt=0,a[1000000]; int check(string n){ string s=n; for(int i=0;i<s.size()/2;i++){ if(s[i]!=s[s.size()-1-i]) return 0; } return 1; }
main() { long long t,k; cin>>t; cin.ignore(); string s; while(t--){
getline(cin,s); cin>>k; cin.ignore(); if(check(s)==1) cout<<"YES"<<endl; else cout<<"NO"<<endl; }
}
so sánh bên trái và phải tăng và giảm dần về giữa nha mng
Nếu xâu S là xâu đối xứng thì dù lặp lại bao nhiêu lần thì nó vẫn là xâu đối xứng, từ đó chỉ cần kiểm tra tính đối xứng cửa S là ra.
Nếu xâu S là xâu đối xứng thì dù lặp lại bao nhiêu lần thì nó vẫn là xâu đối xứng, từ đó chỉ cần kiểm tra tính đối xứng cửa S là ra.