PATB
PATB题解
青铜亡者
这个作者很懒,什么都没留下…
展开
-
PATB 1026 程序运行时间
题记 这道题主要牵扯到四舍五入的问题,如果我们想要对(c2-c1)/100的结果四舍五入,那么首先要让(c2-c1)/100的结果是一个浮点类型然后再加0.5最后强制类型转换为int,如果c2,c1都是整数类型的那么结果自然就是做商之后小数点前面的数字,也就是一个整数类型,所以这里我们可以把c1,c2定义为浮点类型,或者再定义一个中间变量,把100修改成100.0这样结果会自动向上转换类型。 #include <iostream> using namespace std; int ma.原创 2020-10-26 21:42:08 · 122 阅读 · 0 评论 -
PATB 1016 部分A+B
题记 注意题目中的A,B比较大如果用int会爆,所以这道题可以用long long来做,不断取余判断然后做商。当然也可以用字符串遍历一遍就行了。当然如果想省事,直接用algorithm头文件中的count(first,end,value)函数查出来指定的字符出现的次数也是非常方便的。 #include <iostream> using namespace std; typedef long long ll; int calculate(ll a,ll d){ ll sum=0;.原创 2020-10-26 21:15:22 · 93 阅读 · 0 评论 -
PATB 1011 A+B 和 C
#include <iostream> using namespace std; int T; int main() { cin>>T; long long a,b,c; for(int i=1;i<=T;i++){ cin>>a>>b>>c; if(a+b>c) cout<<"Case #"<<i<<": tru.原创 2020-10-26 20:56:20 · 63 阅读 · 0 评论 -
PATB1032 挖掘机技术哪家强 (20分)
题记 需要注意学校的编号是从1开始的 #include <iostream> using namespace std; const int Maxn=1e5+10; int school[Maxn]; int N; int main() { cin>>N; int index,goal,maxIndex=0; int ansSum=0,ansIndex; for(int i=0;i<N;i++){ cin>>.原创 2020-10-26 20:44:54 · 176 阅读 · 2 评论 -
PATB 1004 成绩排名
#include <iostream> using namespace std; int n; struct Student{ string name; string num; int goal; }; int main() { Student highest,lowest; int max=0,min=100; Student tmp; cin>>n; for(int i=0;i<n;i++){ .原创 2020-09-25 21:45:16 · 79 阅读 · 0 评论 -
PATB1003 我要通过!
题记 这道题一开始没发现规律,虽然过了但是写了80行代码,又看了看别人的代码发现有规律可循,a、b、c当中字符’A’的个数分别表示为numa、numb、numc,那么就有numa*numb=numc,这个需要自己推一下。 我们一开始很直观地可以发现最基本的情况是xPATx,其中x可以是任意多个字符’A’组成的字符串(当然长度并不能超过题目给的范围),接着看第三条,这其实是一个递推公式,最基本的情况也就是b所包含的字符’A’的个数是一,之后每一次b中A的个数加一,而且我们知道如果b只有一个A的时候第三个条.原创 2020-09-25 21:27:57 · 119 阅读 · 0 评论 -
PATB1001 害死人不偿命的(3n+1)猜想
题记 这道题就是简单的模拟,如果是一个数据输入,那么一个简单的循环就可以实现,但是如果数据量多的话这个算法效率会极其低下那么可以用剪枝的做法。 代码如下 #include <iostream> using namespace std; int n; int main() { int count=0;//记步数 cin>>n; while(n!=1){ if(n%2==0) n=n/2; else.原创 2020-09-24 21:35:08 · 59 阅读 · 0 评论 -
PATB 1019 数字黑洞
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; int num[5]; bool cmp(int a,int b){ return a>b; } void to_array(int n){//n转化成数组,不用在意顺序反了 for(int i=0;i<4;i++){ num[i]=n%10; ..原创 2020-08-05 17:28:47 · 97 阅读 · 0 评论 -
PATB 1024 科学计数法
这道题真想拿满分可真是需要耐心和细心,首先把这个数从’E’分开,需要有几个前期工作: 1.怎么从’E’分开:getline(cin,num,‘E’);这个3参数的getline()读到E之后会停,而且会把’E’从缓冲区里直接删掉,也就是说接下来读入指数部分就没有E了 2.如果这个数是负数直接输出’-‘并且删掉 3.统计出来小数点后有几位,并且把小数点给删了 接着我们根据指数的正负来分开算顺便把正负号给删了(此时,前面数字部分只有数字了)我们先把指数部分给转化成十进制的数,在此之前还有一个操作: 删掉指数部.原创 2020-08-05 13:58:14 · 196 阅读 · 0 评论 -
PATB 1014 福尔摩斯的约会
这道题需要注意的一点是星期和小时都在第一和第二个字符串中位置相对应的里面找,找到星期之后一定要保存一下下标并且++,再找小时的时候别再把星期的字符给错误的算上了 #include <iostream> #include <string> #include <algorithm> #include <cctype> using namespace std; string true_week[]={"MON","TUE","WED","THU","FRI",".原创 2020-08-05 13:30:09 · 84 阅读 · 0 评论 -
PATB 1009 说反话
使用字符数组实现 #include <iostream> using namespace std; int main() { int num=0;//单词数 char ans[90][90]; while(scanf("%s",&ans[num])!=EOF){ num++; } for(int i=num-1;i>=0;i--){ printf("%s",ans[i]); if(i>.原创 2020-08-05 13:23:53 · 74 阅读 · 0 评论 -
PATB 1048 数字加密 (20分)
记录一下自己遇到的坑:一定要考虑加密的A长度比B长的时候的情况,这时候B不够的地方就当成是0,跟原来的计算方法一样!!! #include <iostream> #include <algorithm> #include <string> using namespace std; char change[]={'0','1','2','3','4','5','6','7','8','9','J','Q','K'}; int main() { string A.原创 2020-08-05 09:10:06 · 83 阅读 · 0 评论