PAT刷题记录
刷题ing
暑假留校,从头开始简单刷一刷PAT上面的练习题,做一个简单的记录
B1011.A+B和C
#include<iostream>
using namespace std;
int main()
{
int n; //多少组
cin>>n;
for(int i=0;i<n;i++)
{
long long a,b,c;
cin>>a>>b>>c;
if(a+b>c)
cout<<"Case #"<<i+1<<": true"<<endl;
else
cout<<"Case #"<<i+1<<": false"<<endl;
}
}
B1016.部分A+B
#include<iostream>
using namespace std;
int main()
{
long long a,b,pa,pb;
pa=pb=0;
int Da,Db;
cin>>a>>Da>>b>>Db;
while(a!=0)
{
int temp;
if(a%10==Da)
{
pa=Da+10*pa;
}
a=a/10;
}
while(b!=0)
{
int temp;
if(b%10==Db)
{
pb=Db+10*pb;
}
b=b/10;
}
cout<<pa+pb<<endl;
}
B1016.程序运行时间
#include<iostream>
using namespace std;
int main()
{
#include<iostream>
#include<stdio.h>
using namespace std;
const int CLK_TCK=100;
int main()
{
int C1,C2;
cin>>C1>>C2;
int ans=C2-C1;
if(ans/100>=50)
ans=ans/100+1;
else
ans=ans/100;
printf("%02d:%02d:%02d\n",ans/3600,ans%3600/60,ans%60);
}
B1046.划拳
#include<iostream>
using namespace std;
int main()
{
int n;//记录多少次
int Da,Db;
Da=Db=0;
cin>>n;
for(int i=0;i<n;i++)
{
int aR,aL,bR,bL;
cin>>aR>>aL>>bR>>bL;//甲喊,甲划,乙喊,乙划
if(aR+bR==aL && aR+bR!=bL)
Db++;
else if(aR+bR==bL && aR+bR!=aL)
Da++;
else;
}
cout<<Da<<" "<<Db<<endl;
}
B1008.数组元素循环右移(17’)
#include<iostream>
using namespace std;
int arr[120];
int main()
{
int N,M;
cin>>N>>M;
int temp=0;
for(int i=0;i<N;i++)
{
if(i<N-M)
cin>>arr[M+i];
else
{
cin>>arr[temp];
temp++;
}
}
for(int i=0;i<N;i++)
{
cout<<arr[i];
if(i!=N-1)
cout<<" ";
}
}
B1012.数字分类
#include<iostream>
using namespace std;
int main()
{
int num;
cin>>num;
int A1,A2,A3,A5;
A1=A2=A3=A5=0;
float A4=0.0;
int flag=1;
float flag_A4[5]={0.0};
for(int i=0;i<num;i++)
{
int temp;
cin>>temp;
if(temp%2==0 && temp%5==0)
{
A1=A1+temp;
flag_A4[0]++;
}
else if(temp%5==1)
{
if(flag%2==0)
A2=A2-temp;
else
A2=A2+temp;
flag++;
flag_A4[1]++;
}
else if(temp%5==2)
A3++;
else if(temp%5==3)
{
A4=A4+temp;
flag_A4[3]++;
}
else if(temp%5==4)
{
if(temp>=A5)
A5=temp;
flag_A4[4]++;
}
}
if(flag_A4[0]==0)
printf("N ");
else
printf("%d ",A1);
if(flag_A4[1]==0)
printf("N ");
else
printf("%d ",A2);
if(A3==0)
printf("N ");
else
printf("%d ",A3);
if(flag_A4[3]==0)
printf("N ");
else
printf("%.1f ",A4/flag_A4[3]);
if(flag_A4[4]==0)
printf("N");
else
printf("%d",A5);
}
B1012.锤子剪刀布
#include<iostream>
using namespace std;
int arr_A[3]={0}; //代表出的次数 J C B
int arr_B[3]={0}; //代表出的次数
int A_win=0,A_lost=0,eq=0;
char mp[3]={'J','C','B'};
int main()
{
int n;//对决次数/emoj
cin>>n;
for(int i=0;i<n;i++)
{
char A,B;
cin>>A>>B;
if(A=='C')
{
if(B=='C')
eq++;
else if(B=='J')
{
A_win++;
arr_A[1]++;
}
else if(B='B')
{
A_lost++;
arr_B[2]++;
}
}
else if(A=='J')
{
if(B=='C')
{
A_lost++;
arr_B[1]++;
}
else if(B=='J')
eq++;
else if(B='B')
{
A_win++;
arr_A[0]++;
}
}
else if(A=='B')
{
if(B=='C')
{
A_win++;
arr_A[2]++;
}
else if(B=='J')
{
A_lost++;
arr_B[0]++;
}
else if(B='B')
eq++;
}
}
cout<<A_win<<" "<<eq<<" "<<A_lost<<endl;
cout<<A_lost<<" "<<eq<<" "<<A_win<<endl;
int id=2,id2=2;
for(int i=2;i>=0;i--)
{
if(arr_A[i]>arr_A[id]) id=i;
if(arr_B[i]>arr_B[id2]) id2=i;
}
cout<<mp[id]<<" "<<mp[id2];
}
B1002.写出这个数
#include<iostream>
#include<string.h>
using namespace std;
char num_ch[10][10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
int main()
{
char num[101];
int flag=0;
int num_nu[101];
cin>>num;
int len=strlen(num);
int sum=0;
for(int i=0;i<len;i++)
{
sum=sum+(int(num[i])-48);
}
while(sum!=0)
{
num_nu[flag]=sum%10;
sum=sum/10;
flag++;
}
for(int i=flag-1;i>=0;i--)
{
if(i!=0)
cout<<num_ch[num_nu[i]]<<" ";
else
cout<<num_ch[num_nu[i]];
}
}
B1004.成绩排名
#include<iostream>
using namespace std;
char Name[100001][15];
char stuNum[100001][15];
int socre[100001];
int main()
{
int num;//学生个数
cin>>num;
int min=0,max=0;
for(int i=0;i<num;i++)
{
cin>>Name[i];
cin>>stuNum[i];
cin>>socre[i];
}
for(int i=0;i<num;i++)
{
if(socre[i]>=socre[max]) max=i;
if(socre[i]<=socre[min]) min=i;
}
cout<<Name[max]<<" "<<stuNum[max]<<endl;
cout<<Name[min]<<" "<<stuNum[min];
}
B1019.数字黑洞
#include<cstdio>
#include<algorithm>
using namespace std;
bool cmp(int a,int b){
return a>b;
}///递减排序
void to_array(int n,int num[]){///将n的每一位存到num数组
for(int i=0;i<4;i++){
num[i]=n%10;
n/=10;
}
}
int to_number(int num[]){///将num数组转换为数字
int sum=0;
for(int i=0;i<4;i++)
{
sum=sum*10+num[i];
}
return sum;
}
int main()
{
int n,minm,maxm;
scanf("%d",&n);
int num[5];
while(1){
to_array(n,num);
sort(num,num+4);
minm=to_number(num);
sort(num,num+4,cmp);
maxm=to_number(num);
n=maxm-minm;
printf("%04d - %04d = %04d\n",maxm,minm,n);
if(n==0||n==6174) break;
}
return 0;
}
B1020.月饼(21’)
#include<iostream>
using namespace std;
int own[10100];
float perJ[10100];
int flag[10100];
int temp;
int main()
{
int num,need;//种类,市场需求
cin>>num>>need;
for(int i=0;i<num;i++)
cin>>own[i];
for(int i=0;i<num;i++)
{
cin>>flag[i];
perJ[i]=flag[i]/1.0/own[i];
}
int max, tmp;
for (int i = 0; i < num; i++) {
max = i;
for (int j = i + 1; j < num; j++) {
if (perJ[j]<perJ[max]) {
max = j;
}
}
float tem;
tem=perJ[max];perJ[max]=perJ[i];perJ[i]=tem;
int tem2;
tem2=own[max];own[max]=own[i];own[i]=tem2;
tem2=flag[max];flag[max]=flag[i];flag[i]=tem2;
//tmp = arr[k];arr[k] = arr[i];arr[i] = tmp;
}
int owns=0;
float fees=0.0;
for(int j=num;j>=0 && need!=0;j--)
{
if(own[j]>=need)
{
fees=fees+perJ[j]*need;
break;
}
else
{
fees=fees+flag[j];
need-=own[j];
}
}
printf("%.2f",fees);
}
B1020.个位数统计
#include<iostream>
#include<string.h>
using namespace std;
int num[10]={0};//数组用来统计次数
int main()
{
char N[1010];
cin>>N;
for(int i=0;i<strlen(N);i++)
num[int(N[i])-48]++;
for(int i=0;i<10;i++)
{
if(num[i]!=0)
cout<<i<<":"<<num[i]<<endl;
}
}
1022.D进制的A+B
#include<iostream>
using namespace std;
int main()
{
int A,B,C,D,num[31]={0},i=0;
cin>>A>>B>>D;
C=A+B;
while(C/D)//为了处理0的情况而提前退出
{
num[i++]=C%D;
C/=D;
}
num[i]=C;//此时i=位数-1
while(i>=0)
cout<<num[i--];
return 0;
}
1023.组个最小数
#include<iostream>
using namespace std;
int num[10];
int main()
{
for(int i=0;i<10;i++)
cin>>num[i];
int flag=0;
for(int i=1;i<10;i++)
{
if(num[i] && flag==0)
{
for(int j=0;j<num[i];j++)
{
if(j==0)
{
cout<<i;
for(int k=0;k<num[0];k++)
cout<<0;
}
else
cout<<i;
}
flag++;
}
else
{
for(int j=0;j<num[i];j++)
cout<<i;
}
}
cout<<endl;
}
1023.组个最小数
#include<iostream>
using namespace std;
int judge(int n) //判断是否为素数
{
for(int i=n/2;i>1;i--)
{
if(n%i==0)
return 0;
}
return 1;
}
int main()
{
int n,m; //长度,位数
cin>>n>>m;
int nu=0;
char num[1200];//用数组去存这些数字
for(int i=0;i<n;i++)
cin>>num[i];
for(int i=0;i<n-m;i++)
{
for(int j=i;j<i+m;j++)
{
nu=nu*10+(num[j]-'0');
}
// cout<<nu<<endl;
if(judge(nu))
{
cout<<nu<<endl;
return 0;
}
nu=0;
}
cout<<404<<endl;
}