PAT乙級題庫1011
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++){
long long a,b,c;
cin>>a>>b>>c;
if(a+b>c){
cout<<"Case #"<<i<<": true"<<endl;
}else{
cout<<"Case #"<<i<<": false"<<endl;
}
}
return 0;
}
PAT乙級題庫1012
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int n;
cin>>n;
int A1=0;
int A2=0;
int flag=-1;
int A3=0;
float A4=0;
int A4s=0;
int A5=0;
int f1=0,f2=0,f3=0,f4=0,f5=0;
while(n--){
int num;
cin>>num;
switch(num%5){
case 0:if(num%2==0) A1=A1+num,f1=1;break;
case 1:flag*=-1;A2=A2+flag*num;f2=1;break;
case 2:A3++;f3=1;break;
case 3:A4+=num;A4s++;f4=1;break;
case 4:if(num>A5) A5=num;f5=1;break;
}
}
if(f1){
cout<<A1<<" ";
}else{
cout<<"N"<<" ";
}
if(f2){
cout<<A2<<" ";
}else{
cout<<"N"<<" ";
}
if(f3){
cout<<A3<<" ";
}else{
cout<<"N"<<" ";
}
if(f4){
printf("%.1f ",A4/A4s);
}else{
cout<<"N"<<" ";
}
if(f5){
cout<<A5<<endl;
}else{
cout<<"N"<<endl;
}
}
稍微有點麻煩了,其實可以更簡潔
PAT乙級題庫1013
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int m,n,cou=0;
cin>>m>>n;
int times=0;
for(int i=2;;i++){
int isprime=0;
if(i==2||i==3){
isprime=1;
cou++;
}else if((i%2)*(i%3)){
int sp=sqrt(i)+1;
int flag=1;
for(int j=2;j<=sp;j++){
if(i%j==0){
flag=0;
break;
}
}
if(flag){
isprime=1;
cou++;
}
}
if(cou>n){
break;
}
if(isprime){
if(cou>=m&&cou<=n){
if(times){
cout<<" ";
}
cout<<i;
times++;
if(times==10){
cout<<"\n";
times=0;
}
}
}
}
}
PAT乙級題庫1014
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
int main()
{
string str1,str2,str3,str4;
string WEEK[7]={"MON","TUE","WED","THU","FRI","SAT","SUN"};
cin>>str1>>str2>>str3>>str4;
char p1=0,p2=0;
int p3;
int flag=0;
for(int i=0;i<str1.size()&&i<str2.size();i++){
if(str2[i]==str1[i]&&flag&&((str1[i]>='A'&&str1[i]<='N')||(str1[i]>='0'&&str1[i]<='9'))){
p2=str1[i];
break;
}
if(((str1[i]>='A'&&str1[i]<='G'))&&str2[i]==str1[i]&&!flag){
p1=str1[i];
flag=1;
}
}
for(int i=0;i<str3.size()&&i<str4.size();i++){
if(((str3[i]>='A'&&str3[i]<='Z')||(str3[i]>='a'&&str3[i]<='z'))&&str4[i]==str3[i]){
p3=i;
break;
}
}
cout<<WEEK[p1-'A']<<" ";
if(p2>='0'&&p2<='9'){
printf("%02d:",p2-'0');
}else{
printf("%02d:",10+p2-'A');
}
printf("%02d\n",p3);
}
角度刁鑽,需要程序魯棒性很強
PAT乙級題庫1015
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
#define MAXN 100000
int N,L,H;
struct student{
int num;
int a;//德行
int s;//才能
int flag;
}data[MAXN];
bool cmp(const student &a,const student &b){
if(a.flag>b.flag){
return true;
}else if(a.flag<b.flag){
return false;
}else{
if(a.a+a.s>b.a+b.s){
return true;
}else if(a.a+a.s<b.a+b.s){
return false;
}else{
if(a.a>b.a){
return true;
}else if(a.a<b.a){
return false;
}else{
if(a.num>b.num){
return false;
}else{
return true;
}
}
}
}
}
int main()
{
scanf("%d %d %d",&N,&L,&H);
int sum=0;
for(int i=0;i<N;i++){
int num,a,s;
scanf("%d %d %d",&num,&a,&s);
if(a>=L&&s>=L){
if(a>=H&&s>=H){
data[sum].flag=4;
}else if(a>=H&&s<H){
data[sum].flag=3;
}else if(a<H&&a>=s){
data[sum].flag=2;
}else{
data[sum].flag=1;
}
data[sum].num=num;
data[sum].a=a;
data[sum].s=s;
sum++;
}
}
sort(data,data+sum,cmp);
printf("%d\n",sum);
for(int i=0;i<sum;i++){
printf("%d %d %d\n",data[i].num,data[i].a,data[i].s);
}
return 0;
}
相當水
PAT乙級題庫1016
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
char a[12],b[12],aa,bb;
scanf("%s %c %s %c",a,&aa,b,&bb);
int as=0,bs=0;
for(int i=0;i<strlen(a);i++){
if(a[i]==aa){
as++;
}
}
for(int i=0;i<strlen(b);i++){
if(b[i]==bb){
bs++;
}
}
int ar=0,br=0;
for(int i=0;i<as;i++){
ar=ar*10+aa-'0';
}
for(int i=0;i<bs;i++){
br=br*10+bb-'0';
}
printf("%d\n",ar+br);
}
水出精彩
PAT乙級題庫1017
x=input()
x=x.split()
print(int(x[0])//int(x[1]),int(x[0])%int(x[1]))
//python 3,lalala
PAT乙級題庫1018
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int main()
{
int N;
scanf("%d",&N);
getchar();
int a[6],b[6];//勝負平,勝錘子,剪刀,布;
memset(a,0,sizeof(a));
memset(b,0,sizeof(a));
while(N--){
char aa,bb;
scanf("%c %c",&aa,&bb);
getchar();
if(aa=='C'){
switch(bb){
case 'C':a[2]++,b[2]++;break;
case 'J':a[0]++,b[1]++,a[3]++;break;
case 'B':a[1]++,b[0]++,b[5]++;break;
}
}else if(aa=='J'){
switch(bb){
case 'C':a[1]++,b[0]++;b[3]++;break;
case 'J':a[2]++,b[2]++;break;
case 'B':a[0]++,b[1]++,a[4]++;break;
}
}else{
switch(bb){
case 'C':a[0]++,b[1]++,a[5]++;break;
case 'J':a[1]++,b[0]++,b[4]++;break;
case 'B':a[2]++,b[2]++;break;
}
}
}
printf("%d %d %d\n",a[0],a[2],a[1]);
printf("%d %d %d\n",b[0],b[2],b[1]);
if(a[5]>=a[4]&&a[5]>=a[3]){
printf("B ");
}else if(a[3]>=a[4]&&a[3]>=a[5]){
printf("C ");
}else{
printf("J ");
}
if(b[5]>=b[4]&&b[5]>=b[3]){
printf("B\n");
}else if(b[3]>=b[4]&&b[3]>b[5]){
printf("C\n");
}else{
printf("J\n");
}
}
莫名的格式錯誤,害我用c語言的輸入輸出改了一遍才正確
PAT乙級題庫1019
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
void x(int n,int &big,int &small){
int a[4]={0,0,0,0};
a[0]=n%10,n=n/10;
a[1]=n%10,n=n/10;
a[2]=n%10,n=n/10;
a[3]=n%10;
sort(a,a+4);
big=a[3]*1000+a[2]*100+a[1]*10+a[0];
small=(a[0]*1000+a[1]*100+a[2]*10+a[3]);
}
int main()
{
int n,flag=1;
scanf("%d",&n);
if(n%1111==0){
printf("%d - %d = 0000\n",n,n);
}else{
int a,b;
while(n!=6174||flag){
x(n,a,b);
flag=0;
printf("%04d - %04d = %04d\n",a,b,a-b);
n=a-b;
}
}
}