PAT (Basic Level) Practice 1012 数字分类
程序员文章站
2022-06-07 14:39:05
...
1012 数字分类
题目
给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:
= 能被 5 整除的数字中所有偶数的和;
= 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 ;
= 被 5 除后余 2 的数字的个数;
= 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;
= 被 5 除后余 4 的数字中最大数字。
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:
每个输入包含 1 个测试用例。每个测试用例先给出一个不超过 1000 的正整数 ,随后给出 个不超过 1000 的待分类的正整数。数字间以空格分隔。
输出格式:
对给定的 个正整数,按题目要求计算 ~ 并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。
若其中某一类数字不存在,则在相应位置输出 N
。
输入样例1:
13 1 2 3 4 5 6 7 8 9 10 20 16 18
输出样例1:
30 11 2 9.7 9
输入样例2:
8 1 2 4 5 6 7 9 16
输出样例2:
N 11 2 N 9
思路(2020-4-12 01:37:1)
这题不用思路,无脑敲。
- 逐个获取输入数据,逐个判断是否符合各个要求,逐个计算累加,逐个输出。
- c++控制输出小数位数https://www.cnblogs.com/hgfgood/p/4248337.html。
- 在https://blog.csdn.net/edricbjtu/article/details/41082597这个dalao的博客学习,搞了好久都不行,不管设置几位,都给我输出1e+001
- 后来找到了2的链接的dalao,加了个
setiosflags(ios::fixed)
搞定。cout << setiosflags(ios::fixed) << setprecision(1) << a4<< " ";
要#include <iomanip>
- 下次还是
printf
好了。
答案1(2020-4-12 01:47:04)
答案还没提交,oj卡住了,有3个在排队,过了一会就,提示内部错误,也真是活久见了。
今天oj可以提交了(2020-4-12 10:40:38),7正确一错误
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int a1 = 0, a2 = 0, a3 = 0, a5 = 0;
float a4 = 0;
int a4count=0;
int n;
cin >> n;
int t;
int a2flag = 1;
for (int i = 0; i < n ; i++)
{
cin >> t;
if(t % 10 == 0)
a1 += t;
if(t % 5 == 1)
{
a2 += t*a2flag ;
a2flag *= -1;
}
if(t % 5 == 2)
{
a3++;
}
if(t % 5 == 3)
{
a4 += t;
a4count ++;
}
if(t % 5 == 4)
{
if(t > a5)
a5 = t;
}
}
if(a1 != 0)
cout << a1<< " ";
else cout << "N ";
if(a2 != 0)//wrong point!
cout << a2<< " ";
else cout << "N ";
if(a3 != 0)
cout << a3<< " ";
else cout << "N ";
if(a4 != 0)
{
a4 = a4/a4count;
cout << setiosflags(ios::fixed) << setprecision(1) << a4<< " ";
}
else cout << "N ";
if(a5 != 0)
cout << a5;
else cout << "N";
return 0;
}
答案2(2020-4-12 10:41:06)
学习了一下dalao,对比了一下自己的代码,发现是出现了问题,可能有符合要求的数,但是结果是0,答案一中标了wrong point
的位置。假如交错求和之后结果是0,我的代码是输出N
,过不了这个测试点,只能说这套测试数据,很niubility。
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int a1 = 0, a2 = 0, a3 = 0, a5 = 0;
float a4 = 0;
int a4count=0;
int n;
cin >> n;
int t;
int a2flag = 1;
int a2count = 0;
for (int i = 0; i < n ; i++)
{
cin >> t;
if(t % 10 == 0)
a1 += t;
if(t % 5 == 1)
{
a2 += t*a2flag ;
a2flag *= -1;
a2count++;
}
if(t % 5 == 2)
{
a3++;
}
if(t % 5 == 3)
{
a4 += t;
a4count ++;
}
if(t % 5 == 4)
{
if(t > a5)
a5 = t;
}
}
if(a1 != 0)
cout << a1<< " ";
else cout << "N ";
if(a2count != 0)
cout << a2<< " ";
else cout << "N ";
if(a3 != 0)
cout << a3<< " ";
else cout << "N ";
if(a4 != 0)
{
a4 = a4/a4count;
cout << setiosflags(ios::fixed) << setprecision(1) << a4<< " ";
}
else cout << "N ";
if(a5 != 0)
cout << a5;
else cout << "N";
return 0;
}
上一篇: 数据结构 第一次实验总结变着法子玩约瑟夫环和一元多项式
下一篇: 枚举和暴力
推荐阅读
-
PAT (Basic Level) Practice (中文)1009 说反话 (20 分)
-
PAT (Basic Level) Practice 1009 说反话 (20 分)
-
PAT (Basic Level) Practice (中文)1009 说反话 (20)
-
PAT (Basic Level) Practice (中文)1066 图像过滤 (15 分)(C实现)
-
1066 图像过滤 (15 分)—PAT (Basic Level) Practice (中文)
-
PAT (Basic Level) Practice (中文) 1066 图像过滤 (15分)
-
PAT (Basic Level) Practice (中文)1066 图像过滤 (15 分)
-
PAT (Basic Level) Practice (中文)1066 图像过滤 (15 分)
-
PAT (Basic Level) Practice (中文)1066 图像过滤 C语言版 (15分)
-
PAT (Basic Level) Practice 1066 图像过滤