Wordを検索
W単語とテキストTを読み込み、テキストTに現れる単語Wの数を出力するプログラムを書きます
Tは、Tiは、空白文字や改行で区切られた文字列で構成されています。単語や文章は、ケースの小文字は区別されませんWに等しいチタンの数をカウントします。
制約
W≤10の長さ
Wは、小文字から成る
ライン≤1000におけるTの長さ
入力
最初の行では、ワードWが与えられます。次の行では、テキストTは、空白文字や改行で区切ら与えられます。
「END_OF_TEXTは、」テキストの終わりを示します。
出力
テキストでWの数を出力します。
サンプル入力
コンピュータは、
コンピュータ科学者、高度熟練のコンピューター・エンジニア育む
新時代のための「知識」を作成し、活用します。
優れたコンピュータ環境を提供します。
END_OF_TEXT
サンプル出力
3
効果の対象に
ワードW、およびテキストT.の一部を入力します。私は単語Wが登場回数を、このテキストを、尋ねました。10以上の、Wは小文字であることが保証されていないのWワード長は、これ以上の末尾に「END_OF_TEXT」にテキスト、テキストおよび最終的には1000個の言葉よりも、大文字と小文字を区別しません。
#include <bits/stdc++.h>
using namespace std;
int main(){
string s1, s2;
cin >> s1;
int ans = 0;
while(cin >> s2){
if(s2=="END_OF_TEXT")
break;
for(int i=0; i<s2.size(); i++) // 转小写
if(s2[i]>='A' && s2[i]<='Z')
s2[i] += 'a'-'A';
if(s1==s2)
ans ++;
}
cout << ans << endl;
return 0;
}
B:シャッフル
あなたの仕事は、アルファベットでマークされ、それぞれがn個のカードのデッキをシャッフルすることです。
単一シャッフルアクションは、hデッキの下からのカードとデッキの一番上に移動し、それらを取り出します。
次のようにカードのデッキは、文字列で表されます。
abcdeefab
それぞれデッキの下部デッキの上カードに位置カードの最初の文字と最後の文字に対応します。
例えば、上記のデッキに、H = 4のシャッフルは、「eefab」残りの文字の最後に最初の4つの文字「ABCD」に移動し、次のデッキを生成します。
eefababcd
あなたは、このようなシャッフル動作を繰り返すことができます。
デッキ(列)及びHの配列を読み取り、最終状態(文字列)を印刷するプログラムを書きます。
入力
入力は複数のデータセットから構成されています。各データセットは、次の形式で与えられます。
デッキを表す文字列
シャッフルMの数
H1
、H2を
。
。
HM
「 - 」文字列の単一文字で入力終了。
制約
ストリング≤200の長さ
1≤M≤100
1≤HI <文字列の長さ
のデータセットの数≤10
出力
各データセットのために、線の最後の状態を表す文字列を印刷します。
サンプル入力
AABC
3
1
2
1
VWXYZ
2
3
4
サンプル出力
AABC
xyzvw
効果の対象に
m回、最後の文字列の出力をシャッフルした後、200を超えていない文字列の長さを入力します。
いわゆるプライマリーシャッフル:シャッフルする位置には、新しい文字列を形成するために、元の文字列の末尾にすぐに文字列の文字の前にH、Hです。
「 - 」最後の文字列の数、そして最後にはあります。
各文字列の長さは200を超えない、各列のシャッフル動作は100を超えない、H法的位置、10以下の数値列。
#include <bits/stdc++.h>
using namespace std;
int main(){
string s, st;
while(cin >> s){
if(s=="-")
break;
int m, h;
int len = s.size();
cin >> m;
for(int i=1; i<=m; i++){
cin >> h;
s = s.substr(h, len-h) + s.substr(0, h); // 后面 h~len-1的字符串拼接上前面0~h-1的字符串
}
cout << s << endl;
}
return 0;
}
C:カードゲーム
太郎と花子は、カードゲームをプレイしています。彼らは、n個のカードそれぞれを持っている、と彼らは、nターンを競います。各ターンで、太郎と花子は、それぞれのカードを出します。アルファベット文字からなる動物の名前は、各カードに書かれた、と辞書順で大きい方はそのターンの勝者となっています。勝者は3ポイントを獲得します。引き分けの場合には、それらは1点それぞれを得ます。
カード太郎と花子は持っているのシーケンスを読み取り、ゲームの最終スコアを報告するプログラムを書きます。
入力
最初の行では、カードの数Nが与えられます。次のn行では、n個のターンのためのカードがそれぞれ与えられています。各ラインについて、最初の文字列は太郎のカードを表し、もう一つは花子のカードを表します。
制約
N≤千
列≤100の長さ
出力
それぞれ太郎と花子の最終スコアを印刷します。それらの間の単一の空白文字を入れてください。
サンプル入力
3
猫の犬の
魚魚の
ライオンの虎
サンプル出力
1 7
効果の対象に
太郎と花子、それぞれ、カード、動物の大きさよりもカード、英語で書かれた動物を取り出し、辞書式の大きな言葉の勝利の規定。勝者は3ポイント、敗者ノーポイント、双方が1ポイントを持って描画を取得します。n個の比較の合計では、どのくらいの最終的なスコアをお願いします。ここで、n <= 1000、ワード長は、100を超えません。
#include <bits/stdc++.h>
using namespace std;
int main(){
string s1, s2;
int n, c1, c2;
cin >> n;
c1 = c2 = 0; //初始化得分
for(int i=1; i<=n; i++){
cin >> s1 >> s2;
if(s1>s2)
c1 += 3;
if(s1==s2)
c1++, c2++;
if(s1<s2)
c2 += 3;
}
cout << c1 << " " << c2 << endl;
return 0;
}
D:変容
与えられた文字列strに一連のコマンドを実行するプログラムを書きます。コマンドは、次のいずれかです。
ABを印刷:STRのb番目の文字に、A番目の文字から印刷
逆AB:STRのb番目の文字に、A番目の文字から逆
ABP置き換える:B-に、A番目の文字から置き換えますpでSTRの番目の文字
STRのインデックスは0で始まることに注意してください。
入力
最初の行では、文字列strが与えられます。strが小文字で構成されています。2行目で、コマンドqの数が与えられます。次Q株において、各コマンドは、上述の形式で与えられます。
出力
各印刷コマンドの場合は、行の文字列を印刷します。
制約
1≤str≤1000の長さ
1≤q≤100
STRの0≤a≤b<長さ
Pのコマンドを置き換える、B-+ 1 =長さは
サンプル入力1
ABCDE
3
1〜3は、XYZ置き換える
逆0~2
プリント1 4
サンプル出力1
外部の
サンプル入力2
XYZ
3
印刷0 2
0 2 ABCの置き換え
プリント0 2
サンプル出力2
XYZ
ABC
効果の対象に
文字列str与えられ、3は操作で行うことができる(0から開始位置カウント)列:印刷間隔〜B、反転部〜bは、弦部〜B pがあります置き換え。総運用Q、1 <= Q <= 100。文字列の操作が正当なもの。
#include <bits/stdc++.h>
using namespace std;
int main(){
string op, s, p;
int q, a, b;
cin >> s;
cin >> q;
for(int i=1; i<=q; i++){
cin >> op >> a >> b;
if(op=="replace"){
cin >> p;
s.replace(a, b-a+1, p); // replace(起始位置,长度,替换字符串)
}
if(op=="reverse"){
for(int j=a; j<=(a+b)/2; j++) // 反转
swap(s[j], s[a+b-j]);
}
if(op=="print"){
for(int j=a; j<=b; j++)
cout << s[j];
cout << endl;
}
}
return 0;
}