L1-001 Hello World(5分)
この非常に単純な質問に対する入力はありません。
有名なフレーズ「HelloWorld!」を1行で出力するだけです。
#include <iostream>
using namespace std;
int main(){
cout<<"Hello World!"<<endl;
return 0;
}
L1-002印刷砂時計(20点)
この質問では、指定された記号を砂時計の形に印刷するプログラムを作成する必要があります。
いわゆる「砂時計の形」とは、各行が奇数のシンボルを出力すること、各行のシンボルの中心が整列すること、2つの隣接する行のシンボルの数が2つ異なること、シンボルの数が最初に減少することを意味します。最大から最小、1になり、次に最小から最大に増加します。最初と最後の記号数は同じです。
N個の記号がある場合、それは必ずしも砂時計を構成するわけではありません。印刷された砂時計は、できるだけ多くの記号を使用できる必要があります。
入力形式:
1行に1つの正の整数N(≤1000)と1つの記号をスペースで区切って入力します。
出力形式:
最初に指定された記号で構成される最大の砂時計の形状を印刷し、最後に未使用の記号の数を1行に出力します。
#include <iostream>
using namespace std;
int main(){
int i = 0;
char c;
cin>>i>>c;
int sum = 1, t = 1;
for(int j = 1; (sum + j + 2) * 2 - 1 <= i; j += 2){
t = j + 2;
sum = sum + j + 2;
} //t:最顶层的数量, sum:需要的符号数总和
//上层
for(int k = t; k >= 1; k -= 2){
if(k < t){
for(int a = 0; a < (t - k)/2; a++){
cout<<' ';
}
for(int a = 0; a < k; a++){
cout<<c;
}
cout<<endl;
}
else{
for(int a = 0; a < k; a++){
cout<<c;
}
cout<<endl;
}
}
//下层
for(int k = 3; k <= t; k += 2){
if(k < t){
for(int a = 0; a < (t - k)/2; a++){
cout<<' ';
}
for(int a = 0; a < k; a++){
cout<<c;
}
cout<<endl;
}
else{
for(int a = 0; a < k; a++){
cout<<c;
}
cout<<endl;
}
}
//剩余符号数
cout<<i - sum * 2 + 1;
return 0;
}
L1-003 1桁の統計(15ポイント)
k桁の整数Nが与えられた場合、それぞれの異なる1桁の出現をカウントするプログラムを作成してください。
例:N = 100311の場合、2 0、3 1、および13があります。
入力形式:
各入力には、1つのテストケース、つまり1000桁以下の正の整数Nが含まれます。
出力形式:
Nの異なる1桁ごとに、桁DとNの出現回数MをD:Mの形式で1行に出力します。Dの昇順で出力する必要があります。
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
int main(){
char str[1000];
cin>>str;
int l = strlen(str);
vector <int> res(10, 0);
for(int j = 0; j < l; j++){
switch(str[j] - 48){
case 0: res[0]++; break;
case 1: res[1]++; break;
case 2: res[2]++; break;
case 3: res[3]++; break;
case 4: res[4]++; break;
case 5: res[5]++; break;
case 6: res[6]++; break;
case 7: res[7]++; break;
case 8: res[8]++; break;
default: res[9]++;
}
}
for(int a = 0; a < 10; a++){
if(res[a] != 0) cout<<a<<':'<<res[a]<<endl;
}
return 0;
}
L1-004摂氏温度を計算する(5ポイント)
華氏温度Fが与えられた場合、この質問では、対応する摂氏温度Cを計算するプログラムを作成する必要があります。計算式:C = 5×(F-32)/ 9。この質問は、入力と出力が整数の範囲内にあることを保証します。
入力形式:
入力は、華氏で1行の温度を示します。
出力形式:
「Celsius = C」の形式で、対応する摂氏温度Cの整数値を1行で出力します。
#include <iostream>
using namespace std;
int main(){
int F = 0;
cin>>F;
int C = (F - 32) * 5 / 9;
cout<<"Celsius = "<<C<<endl;
return 0;
}
L1-005試験席番号(15点)
各PAT受験者には、テストを受けるときに2つのシート番号が割り当てられます。1つはテストシートで、もう1つはテストシートです。通常の場合、受験者は会場に入るときに最初に試験機の座席番号を取得します。試験機の状態に入ると、システムは試験候補者の試験座席番号を表示します。試験中、受験者は試験席に変更する必要があります。しかし、一部の受験者は遅れて試験機が終了しました。彼らは受け取った試験機の座席番号について助けを求めることしかできず、舞台裏から試験機の座席番号を見つけることができます。
入力形式:
最初の行を入力して正の整数N(≤1000)を入力し、次にN行を入力すると、各行に1人の候補者の情報(入場券番号、試験機の座席番号、試験座席番号)が表示されます。入場券番号は16桁で、座席番号は1からNまでです。全員の入場券番号が異なり、いつでも2人が同じ座席に割り当てられないようにするために入力します。
受験者の情報の後に、正の整数M(≤N)を指定してから、スペースで区切って、連続して照会するM個のテストシート番号を指定します。
出力形式:
照会する必要のある各試験機の座席番号に対応し、対応する受験者の試験入場券番号と試験座席番号をスペースで区切って1行で出力します。
#include <iostream>
#include <vector>
using namespace std;
struct Student{
long long num;
int e1;
int e2;
};
int main(){
int a = 0;
cin >> a;
vector <Student> res(a);
for(int i = 0; i < a; i++){
cin >> res[i].num >> res[i].e1 >> res[i].e2;
}
int b = 0;
cin >> b;
vector <int> match(b);
for(int j = 0; j < b; j++){
cin >> match[j];
}
for(int k = 0; k < b; k++){
for(int i = 0; i < a; i++){
if(res[i].e1 == match[k]) cout << res[i].num << ' ' << res[i].e2 << endl;
}
}
return 0;
}