说好的钻石难度,结果本人菜的一地。。只有88分。。。。

文章目录

  • 7-1 考试周
  • 7-2 真的恭喜你
  • 7-3 平均成绩
  • 7-4 古风A+B
  • 难度开始上升
  • 7-5 猜近似数字
  • 7-6 随机输一次
  • 7-7 阶乘的非零尾数
  • 7-8 三足鼎立


前四题
十分钟AC
后两题二十分钟自闭
第五题玄学卡点不知为何

7-1 考试周

模拟即可,按照格式要求输出

#include<bits/stdc++.h>
using namespace std;
int main()
{double a,b,c;cin>>a>>b;c=a/b;printf("%.0lf/%.1f=%.0f",a,c,b);
}

7-2 真的恭喜你

if比较输出

#include<bits/stdc++.h>
using namespace std;
int main()
{int n;cin>>n;if(n>=90)printf("gong xi ni kao le %d fen!",n);else printf("kao le %d fen bie xie qi!",n);
}

7-3 平均成绩

1和0分别代表男女
男女成绩分别存,各自算出平均值,然后再求总平均值

#include<bits/stdc++.h>
using namespace std;double sum1;double sum2;double ans1;double ans2;
int main()
{double n;double a,b;cin>>n;for(int i=1;i<=n;i++){cin>>a>>b;if(a==1){sum1++;ans1+=b;} else {sum2++;ans2+=b;}}if(sum1==0){printf("%.1lf X %.1lf",(ans1+ans2)/n,ans2/sum2);}else if(sum2==0){printf("%.1lf %.1lf X",(ans1+ans2)/n,ans1/sum1);}else {printf("%.1lf %.1lf %.1lf",(ans1+ans2)/n,ans1/sum1,ans2/sum2);}
}

7-4 古风A+B

特判正负,因为“-”符号要特别一行,然后拆成单个存入数组,再从数组输出

#include<bits/stdc++.h>
using namespace std;double sum1;double sum2;double ans1;double ans2;
int w[100];
int main()
{long long a,b,c;cin>>a>>b;c=a+b;int ans=0;if(c<0){cout<<"-"<<endl; c=c*-1;}if(c==0){cout<<"0";return 0;}while(c){w[++ans]=c%10;c/=10;}for(int i=ans;i>=1;i--){cout<<w[i]<<endl; }
}

难度开始上升

7-5 猜近似数字

注意两个数如果长度不一样直接就算错,输出“No”,
相同情况下,从最高位开始求差的绝对值,如果该位差的绝对值大于1,就算错,则输出“No”
如果有一位差的绝对值是1,则后面再出现绝对值1的情况,也算输,
也就是所有位上最多只能有一位的差绝对值是1,数量不能多,差的决定值不能大于1
但是这个题我错了一个点也不知道为什么?可能哪里我忽视了
我的代码如下(包含错误)

#include<bits/stdc++.h>
using namespace std;
double b=0,g=0;
double sum;
int sumb,sumg;
int main()
{string a,b;int c[1004];cin>>a;char ch=getchar();while(cin>>b&&b!="-1"){//  cout<<"--"<<" "<<b<<endl;memset(c,0,sizeof(c));ch=getchar();if(a.length()!=b.length())cout<<"No"<<endl;else {//         cout<<"***"<<" "<<b<<endl;for(int i=0;i<a.length();i++){//            printf("b[a]-a[]=%d\n ",abs(a[i]-b[i]) ); if(a[i]<b[i])   c[i]=b[i]-a[i];else c[i]=a[i]-b[i];//         cout<<" c[i]="<<c[i]<<endl;}bool f=0;for(int i=0;i<=a.length();i++){//     cout<<"i="<<i<<endl; if(c[i]>1){cout<<"No"<<endl;f=0;break;}else if(c[i]==1&&f==0){f=1;}else if(c[i]==1&&f==1){cout<<"No"<<endl;f=0;break;}}if(f==1)cout<<"Yes"<<endl;}}}

正确代码:(学校的大佬)

#include<bits/stdc++.h>using namespace std; string a,b; int n; bool boolean(){int l=a.size();bool f=0; for(int i=0;i<l;i++){ if(abs(a[i]-b[i])==0){ continue; }
else if(abs(a[i]-b[i])==1&&f==0){ f=1; }else return 0; }return 1; }int main(){ cin>>a; while(1){ cin>>b; if(b=="-1") break; if(b.size()!=a.size()){ printf("No\n"); continue; }if(boolean()) printf("Yes\n"); else printf("No\n"); }return 0; }

7-6 随机输一次

尖子石头步的拼音第一位都不一样,所以光比第一位就可以
注意k中是每个多少局输一次,而非是第多少局输一次

**#include<bits/stdc++.h>
using namespace std;
int k[10006];
int main()
{int n;cin>>n;for(int i=1;i<=n;i++)cin>>k[i];char ch;ch=getchar();char s[13];int ans=1;int sum=0;bool f=0; while(~scanf("%s",s)){sum++;if(ans>n)ans%=n;if(k[ans]+1==sum){f=1;ans++;sum=0;//   cout<<"-----"<<endl;}else f=0;if(s[0]=='E')break;if(s[0]=='C'){if(f==1)cout<<"JianDao"<<endl;else cout<<"Bu"<<endl;}else if(s[0]=='J'){if(f==1)cout<<"Bu"<<endl;else cout<<"ChuiZi"<<endl;}else if(s[0]=='B'){if(f==1)cout<<"ChuiZi"<<endl;else cout<<"JianDao"<<endl;}ch=getchar();}return 0;
}**

以下两题代码均来自我学校的大佬学长

7-7 阶乘的非零尾数

之前见过一个求最后一个非零尾数
数论问题,首先考虑末尾产生0的情况,只有当相乘的数的因子中出现2和5时会出现0,也就是0的数量取决于出现多少对2和5。
2和5都有时就出现一个0,所以求min(5,2)
因为在阶乘中5的数量是少于2的,所以只需要讨论因子中有多少个5就行,对于求后k位非零数,因为对于一个整数的后k位很简单,都会求,所以只需要在计算阶乘的过程中将对应数量的
2和5除去即可
比如求5!=12345=120的后两位非零数,就是在计算时将2和5去除计算341,然后mod 100即可

#include<bits/stdc++.h>using namespace std;
typedef long long ll;
int num1,num2;
int n,k;
int main(){ cin>>n>>k; int n1=n;while(n1){num1+=n1/5; //计算n1中因数5的个数 n1=n1/5; //}int num=num1;num2=num1;ll mod=pow(10,k);//求非零k位数 ll sum=1;for(int i=1;i<=n;i++){ int w=i;while(w%2==0&&num1){w/=2;num1--; }while(w%5==0&&num2){ w/=5;num2--; }sum=(sum%mod*w%mod)%mod; }string c="%0"; c=c+(char)(k+'0')+"lld"; printf(c.data(),sum); printf(" %d",num);return 0;
}

7-8 三足鼎立

之前做过一个类似的,是求能组成多少个三角形
暴力,肯定是不对滴,超时嘛
因为是构成三角形,也就是任何两边之差一定小于第三边
其中一个边已经给了

我们可以先排序,这样具备单调性,
枚举一个边,然后通过二分来确定第三个边的范围,在这范围内的是符合单个条件,然后反过来操作(确定第三个边,然后二分第二个边),重复部分就符合全部要求
所以最后结果除以二

#include<bits/stdc++.h>using namespace std;
typedef long long ll;
int num1,num2;
int n,k;
const int maxn=1e6+4;
int a[maxn];
int main(){ int n,p;cin>>n>>p;for(int i=0;i<n;i++)cin>>a[i];sort(a,a+n);ll sum=0;for(int i=0;i<n;i++){int high=lower_bound(a,a+n,a[i]+p)-a;int low=upper_bound(a,a+n.abs(a[i]-p))-a;int num=high-low;if(i>=low&&i<=high){num--;sum++num;}}cout<<sum/2<<endl;
}

520 钻石争霸赛 题解相关推荐

  1. PTA 520钻石争霸赛题解

    第一题 7-1 考试周 (5分) 考试周快到了,浙江大学的电子屏又调皮了-- 本题请你帮小编写一个自动倒计时的程序,对给定的日期(例如"腊八"就对应 8)和倒计时天数(例如电子屏上 ...

  2. 520 钻石争霸赛 2023

    活动链接 520 钻石争霸赛 2023 520-1 520无尽爱 520-2 心动指数 520-3 不要怕,爱! 520-4 天生一对 520-5 翻倒数 520-6 情侣数 520-7 撒狗粮 52 ...

  3. 520 钻石争霸赛 2021 PTA 1-6题

    520 钻石争霸赛 2021 PTA 7-1 自动编程 (5 分) 7-2 加油冲鸭 (10 分) 7-3 520的表白 (10 分) 7-4 奇葩楼层 (15 分) 7-5 大勾股定理 (15 分) ...

  4. PAT 520 钻石争霸赛 2021 118分题解(满分120)

    序: 为了锻炼自己的编程水平,参加了此次520的编程比赛,因此没有好好准备520礼物(大哭.png),下次520练习赛再也不参加了,还是npy更重要.但不过这次既然参加了,就总结一下吧.这次总分118 ...

  5. 【拼题A】 520 钻石争霸赛 2023 题解

    520-1 520无尽爱 分数 5 作者 陈越 单位 浙江大学 <I Love You 1000 Times>是 The Platters 于 2019 年演唱的歌曲.在 520 这个日子 ...

  6. PTA 520 钻石争霸赛 2021

    有一道题没来得及做,目前的排名是57,不知道后面会被挤到哪里. 文章目录 7-1 自动编程 (5 分) 7-2 加油冲鸭 (10 分) 7-3 520的表白 (10 分) 7-4 奇葩楼层 (15 分 ...

  7. 520 钻石争霸赛 2021

    文章目录 7-1 自动编程 (5 分) 输入格式: 输出格式: 输入样例: 输出样例: Code 7-2 加油冲鸭 (10 分) 输入格式: 输出格式: 输入样例 1: 输出样例 1: 输入样例 2: ...

  8. 520 钻石争霸赛 7-8浪漫侧影(二叉树的遍历)

    "侧影"就是从左侧或者右侧去观察物体所看到的内容.例如上图中男生的侧影是从他右侧看过去的样子,叫"右视图":女生的侧影是从她左侧看过去的样子,叫"左视 ...

  9. 【PTA】520 钻石争霸赛 2021,119分

    序 大概写了30mins多点,后来有事情去了就溜了没打完 勾股定理最后一个点WA了少了1分,错误数据是1e4大概暴力T了,不过没时间改了 7-1 自动编程 (5 分) 7-1 自动编程 (5 分) 输 ...

最新文章

  1. 数学与 AI「融通」 ,徐宗本院士进行超强“迁移学习”
  2. (转)angular进行md5加密 base64加密 哈希加密
  3. ambari 维护模式及reset API 操作
  4. html页面锁屏,锁屏页面.html
  5. Jenkins持续集成环境, 如何自定义 maven 仓库
  6. LeetCode26.删除排序数组中的重复项
  7. 3D打印软件推荐|常用3D打印软件有哪些?
  8. (转载)CruiseControl配置介绍
  9. TCP/IP报文头部整理
  10. 在VMware中安装ArchLinux
  11. 理解shallow heap 和 retained heap
  12. android studio hiera,速成意大利语第课 昨天晚上我在电视机前我们不能空手去那里.doc...
  13. vcs_dve+sverilog
  14. 【软件测试】什么样的项目适合做自动化测试?自动化测试有需要那些技术?
  15. OpenCV4 Viz模块使用学习(二)
  16. Web前端开发掌握的技术
  17. android数据线接口定义,制作Android手机可连接普通键盘的数据转接线
  18. 【目标检测】MMDetection的安装与基础使用
  19. Android系统 应用图标显示未读消息数(BadgeNumber) 桌面app图标的角标显示
  20. 核心银行系统 相关文章 已搬家至微信公众号

热门文章

  1. 限时秒杀│中科院推荐!6个引自美国NASA盒子,玩转科学
  2. java2的7次方怎么表示_静态市盈率要怎么看?
  3. jwt如何防止token被窃取_在吗?认识一下JWT(JSON Web Token)?
  4. java关于异常的面试程序题_Java挑战:最难的十个面试题(附答案)「下」
  5. jpa 根据主键生成策略获取id_如何在使用JPA和Hibernate时选择id生成策略
  6. linux oracle流复制,oracle 流复制
  7. java 反射 int_Java 反射由浅入深 | 进阶必备
  8. 广西高考成绩查询2021,2021年广西高考个人排名怎么查询,广西高考成绩排名查询方法...
  9. mysql采用 级触发_Mysql高级之触发器(trigger)
  10. [JavaWeb-HTTP]HTTP概念