今天下午首次在PTA平台体验天梯赛制,试题的解答提交后由评分系统即时评出得分,整场比赛得分为各题得分之和,可以反复提交,取最高分,提交错误不扣分。PS.真正天梯组队赛时参赛队员的个人排名由其个人获得的总分决定。在决定个人特等奖时,若出现总分并列,则按最高级别得分排名;若仍然并列,则按最高级别完整解决问题的个数进行排名;若仍然并列,则按系统记录的最后一次提交时间进行排名,快者为王。速度与激情的碰撞真的很刺激!
先挂个链接吧,供以后备用!–>
一、Hello World! (5 分)
签到题,本题不解释。
#include<stdio.h>
int main()
{
printf("Hello World!");
}
二、后天 (5 分)
签到题,本题不解释。
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a;
cin>>a;
if(a>=1&&a<=5)cout<<a+2<<endl;
else if(a==6) cout<<"1"<<endl;
else if(a==7) cout<<"2"<<endl;
}
三、计算阶乘和 (10 分)
签到题,本题不解释。
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
int jc(int n)
{
int s=1,sum=0;
for(int i=1;i<=n;i++)
{
s*=i;
sum+=s;
}
return sum;
}
int main()
{
int n,s;
cin>>n;
cout<<jc(n)<<endl;
}
四、念数字 (10 分)
本题只需注意行末没有空格,数字直接if判断输出,属于签到题。
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a[1000];
cin>>a;
int len=strlen(a);
for(int i=0;i<len;i++)
{
if(i!=len-1)
{
if(a[i]=='-') cout<<"fu ";
else if(a[i]=='0') cout<<"ling ";
else if(a[i]=='1') cout<<"yi ";
else if(a[i]=='2') cout<<"er ";
else if(a[i]=='3') cout<<"san ";
else if(a[i]=='4') cout<<"si ";
else if(a[i]=='5') cout<<"wu ";
else if(a[i]=='6') cout<<"liu ";
else if(a[i]=='7') cout<<"qi ";
else if(a[i]=='8') cout<<"ba ";
else if(a[i]=='9') cout<<"jiu ";
}
else
if(a[i]=='-') cout<<"fu ";
else if(a[i]=='0') cout<<"ling";
else if(a[i]=='1') cout<<"yi";
else if(a[i]=='2') cout<<"er";
else if(a[i]=='3') cout<<"san";
else if(a[i]=='4') cout<<"si";
else if(a[i]=='5') cout<<"wu";
else if(a[i]=='6') cout<<"liu";
else if(a[i]=='7') cout<<"qi";
else if(a[i]=='8') cout<<"ba";
else if(a[i]=='9') cout<<"jiu";
}
}
五、一帮一 (15 分)
我们可以使用结构体保存学生信息,其中,不妨使用字符串来保存学生的姓名//未完待续
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main(){
string s;
int len,j=0,m=0;
double i=1.0;
cin>>s;
if(s[0]=='-')
i=i*1.5;
len=s.size();
if((s[len-1]-48)%2==0)
i=i*2;
for(j=0;j<len;j++){
if(s[j]=='2'){
m++;
}
}
if(s[0]=='-')
len--;
double w=(double)((double)m/len)*i*100;
printf("%.2lf%%\n",w);
return 0;
}
六、到底有多二 (15 分)
本题要求负值翻1.5倍,偶数翻两倍,直接按照题意模拟即可。
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main(){
string s;
int len,j=0,m=0;
double i=1.0;
cin>>s;
if(s[0]=='-')
i=i*1.5;
len=s.size();
if((s[len])%2==0)
i=i*2;
for(j=0;j<len;j++){
if(s[j]=='2'){
m++;
}
}
if(s[0]=='-')
len--;
double w=(double)((double)m/len)*i*100;
printf("%.2lf%%\n",w);
return 0;
}
七、N个数求和 (20 分)
评论: 待完善
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
int gcd(int x,int y)
{
return y?gcd(y,x%y):x;
}
int main()
{
int n,a1,b1,a2,b2,t,p;
cin>>n;
scanf("%d/%d",&a1,&b1);
n--;
while(n--)
{
scanf("%d/%d",&a2,&b2);
a1=a1*b2+a2*b1;b1*=b2;
if(a1<0)
a1*=-1,p=-1;
else if(a1==0)
{
b1=1;continue;
}
else p=1;
t=gcd(a1,b1);
a1=a1*p/t;b1/=t;
}
if(abs(a1)%b1==0) printf("%d\n",a1/b1);
else if(abs(a1)/b1>=1) printf("%d %d/%d\n",a1/b1,abs(a1)-abs(a1/b1)*b1,b1);
else printf("%d/%d\n",a1,b1);
}
八、出租 (20 分)
评价: 待完善
九、互评成绩 (25 分)
评价: 待完善
代码:
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
double pj[10010];
int a[12];
bool cmp(double a, double b){
return a>b;
}
int main(){
int n, k, m;
cin>>n>>k>>m;
for(int i=0;i<n;i++){
for(int j=0;j<k;j++){
cin>>a[j];
}
sort(a,a+k);
double num=0;
for(int j=1;j<k-1;j++){
num+=a[j];
}
pj[i]=num/(k-2);
}
sort(pj,pj+n,cmp);
int cnt=0;
for(int i=m-1;i>=0;i--){
printf(++cnt==1?"%.3f":" %.3f", pj[i]);
}
return 0;
}
十、树的遍历 (25 分)
评价: 待完善
十一、 家庭房产 (25 分)
评价: 待完善
十二、名人堂与代金券 (25 分)
代码:
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
struct node{
char zh[20];
int score;
}arr[10010];
bool cmp(node a,node b){
if(a.score==b.score) return strcmp(a.zh,b.zh)<0?1:0;
return a.score>b.score;
}
int main(){
int n,g,k,sum=0,rank,sc=101;
scanf("%d%d%d", &n, &g, &k);
for(int i=0;i<n;i++){
int a;
scanf("%s %d",arr[i].zh,&a);
arr[i].score =a;
if(a>=60){
if(a<g) sum+=20;
else sum+=50;
}
}
sort(arr,arr+n,cmp);
printf("%d\n",sum);
for(int i=0;;i++){
if(arr[i].score<sc){
sc=arr[i].score;
rank=i+1;
}
if(rank>k) break;
printf("%d %s %d\n", rank, arr[i].zh, arr[i].score);
}
return 0;
}