PAT乙級練習(三)
阿新 • • 發佈:2018-12-12
1011 A+B 和 C(15 分)
給定區間 [−231,231] 內的 3 個整數 A、B 和 C,請判斷 A+B 是否大於 C。
輸入格式:
輸入第 1 行給出正整數 T (≤10),是測試用例的個數。隨後給出 T 組測試用例,每組佔一行,順序給出 A、B 和 C。整數間以空格分隔。
輸出格式:
對每組測試用例,在一行中輸出 Case #X: true
如果 A+B>C,否則輸出 Case #X: false
,其中 X
是測試用例的編號(從 1 開始)。
輸入樣例:
4 1 2 3 2 3 4 2147483647 0 2147483646 0 -2147483648 -2147483647
輸出樣例:
Case #1: false
Case #2: true
Case #3: true
Case #4: false
部分正確
#include<iostream> #include<cstdio> using namespace std; int main() { int cnt = 0,a,b,c; cin >> cnt; int i = 1; for (; i <= cnt; i++) { cin >> a >> b >> c; if (a + b > c) { printf("Case #%d: true\n", i); } else printf("Case #%d: false\n", i); } return 0; }
1012 數字分類(20 分)
給定一系列正整數,請按要求對數字進行分類,並輸出以下 5 個數字:
- A1 = 能被 5 整除的數字中所有偶數的和;
- A2 = 將被 5 除後餘 1 的數字按給出順序進行交錯求和,即計算 n1−n2+n3−n4⋯;
- A3 = 被 5 除後餘 2 的數字的個數;
- A4 = 被 5 除後餘 3 的數字的平均數,精確到小數點後 1 位;
- A5 = 被 5 除後餘 4 的數字中最大數字。
輸入格式:
每個輸入包含 1 個測試用例。每個測試用例先給出一個不超過 1000 的正整數 N,隨後給出 N 個不超過 1000 的待分類的正整數。數字間以空格分隔。
輸出格式:
對給定的 N 個正整數,按題目要求計算 A1~A5 並在一行中順序輸出。數字間以空格分隔,但行末不得有多餘空格。
若其中某一類數字不存在,則在相應位置輸出 N
。
輸入樣例 1:
13 1 2 3 4 5 6 7 8 9 10 20 16 18
輸出樣例 1:
30 11 2 9.7 9
輸入樣例 2:
8 1 2 4 5 6 7 9 16
輸出樣例 2:
N 11 2 N 9
答案錯誤
#include<iostream>
#include<cstdio>
using namespace std;
int main() {
int count = 0, cnt = 0, t, flag = 1,sum=0;
int arr[1001] ;
float a[5] = { 0,0,0,0,0 };
cin >> t;
for (int i = 0; i < t; i++) {
cin >> arr[i];
if (arr[i] % 5 == 0 && arr[i] % 2 == 0) {
a[0] += arr[i];
}
if (arr[i]%5==1) {
a[1] += arr[i] * flag;
flag = flag * (-1);
}
if (arr[i] % 5 == 2) {
a[2]++;
}
if (arr[i] % 5 == 3) {
sum += arr[i];
count++;
}
if (arr[i] % 5 == 4) {
if (arr[i] > a[4]) {
a[4] = arr[i];
}
}
}
a[3] = (float)sum / count;
if (a[0] == 0)
printf("N ");
else
printf("%d ", a[0]);
if (a[1] == 0)
printf("N ");
else
printf("%d ", a[1]);
if (a[2] == 0)
printf("N ");
else
printf("%d ", a[2]);
if (a[3] == 0)
printf("N ");
else
printf("%.1lf ", a[3]);
if (a[4] == 0)
printf("N");
else
printf("%d",a[4]);
return 0;
}
float強制轉換為int,變數為0,修改好後,仍然有部分答案錯誤,待改
1013 數素數(20 分)
令 Pi 表示第 i 個素數。現任給兩個正整數 M≤N≤104,請輸出 PM 到 PN 的所有素數。
輸入格式:
輸入在一行中給出 M 和 N,其間以空格分隔。
輸出格式:
輸出從 PM 到 PN 的所有素數,每 10 個數字佔 1 行,其間以空格分隔,但行末不得有多餘空格。
輸入樣例:
5 27
輸出樣例:
11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
bool pads(int x) {
int k = 1;
for (int i = 2; i <= sqrt(x); i++) {
if (x%i == 0) return false;
}
return true;
}
int main() {
int m, n,i=2;
cin >> m >> n;
int cnt = 0;
while (cnt <= n) {
if (pads(i)) {
cnt++;
if (cnt >= m && cnt <= n) {
if ((cnt - m + 1) % 10 != 1)
cout << " ";
cout << i;
if ((cnt - m + 1) % 10 == 0)
cout << "\n";
}
}
i++;
}
return 0;
}