您的位置:首页 > 其它

2019-07-10原来已经毕业一年了呀,原来傻了吧唧的小包子现在变成了傻了吧唧的老包子,嘤嘤嘤……很多人一年多都没见了呀,毕业后不知去向,想想那天下午我们一起吃鸡在游戏里看见了好看的晚霞,真的好开心

2019-07-10 15:52 253 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_44412218/article/details/95319598

1012B 

依旧很简单,就是给输入的数分类,输出……

给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:

  • A​1​​ = 能被 5 整除的数字中所有偶数的和;
  • A​2​​ = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n​1​​−n​2​​+n​3​​−n​4​​⋯;
  • A​3​​ = 被 5 除后余 2 的数字的个数;
  • A​4​​ = 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;
  • A​5​​ = 被 5 除后余 4 的数字中最大数字。

新的知识点,就是控制输出精度,使用setprecision( )函数,需要添加头文件 #include<iomanip>,假如输出两位小数点精度的a,前面需要加fixed(加了是控制小数点后位数的,不加是控制整体位数的),即cout<<fixed<<setprecision(2)<<a;

代码:

[code]#include <iostream>
#include <vector>
#include<iomanip>
using namespace std;

int main()
{
int num, sum1 = 0, sum2 = 0, sum3 = 0,sum5 = 0, i = 0;
float a4, sum4 = 0;
int N;
int flag = 1; int a = 0;
cin >> N;
for (int j = 0; j<N; j++)
{
cin >> num;
if (num % 10 == 0)
{
sum1 += num; a = 1;
}
else if (num % 5 == 1)
{
sum2 += flag*num;
flag *= -1;
}
else if (num % 5 == 2)
sum3++;
else if (num % 5 == 3)
{
sum4 += num;
//cout << sum4 << endl;
i++;
//cout << i << endl;
}
else if (num % 5 == 4)
sum5 = sum5<num ? num : sum5;
else continue;
}
if (a)
cout << sum1;
else cout << "N";
if (sum2)
cout << " " << sum2;
else cout << " N";
if (sum3)
cout << " " << sum3;
else cout << " N";
if (i)
{
a4 = sum4 / i;
cout << " " << fixed << setprecision(1) << a4;
}
else cout << " N";
if (sum5)
cout << " " << sum5;
else cout << " N";
system("PAUSE");
return 0;
}

要考虑,sum1和sum2为0 的条件,然后就没什么了。

下午应付完老师,就去做PAT甲级的题,然后发现阻挡我做题的最重要一点,就是题目看不懂,看着输入输出样例研究半天,也没猜对,不得不打开我的网易字典……

polynomials 多项式

这道题就是给出两行数字,先给次数,后面紧跟着系数。两行汇总输出,小数点保留后面一位。

然后我只完成了15/25,找不到哪里错了;先贴代码。

[code]#include<iostream>
#include<iomanip>
#include <vector>
using namespace std;

int main()
{
float pol1[1005] = { 0 };
float pol2[1005] = { 0 };
float ans[1000];
int i, j, a1, a2, a,c,d;
float b; int count = 0;
cin >> a1;
while (cin >> a >> b)
{
pol1[a] = b;
count++;
if (count == a1)
break;
}
cin >> a2; count = 0;
while (cin >> a >> b)
{
pol2[a] = b;
count++;
if (count == a2)
break;
}
count = 0;
vector<int>num;
for (j = 0; j<1005; j++)
{
ans[j] = pol1[j] + pol2[j];
if (ans[j]!=0)
num.push_back(j);
}
int l = num.size();
cout << l << " ";
if(l==0)
cout<<"0";
if (l == 1)
{
c = ans[num[0]];
if (c - ans[num[0]] == 0)
cout << num[0] << " " << ans[num[0]];
else cout << num[0] << " " <<fixed<< setprecision(1) << ans[num[0]];
}
else
{
for (i = l-1; i>0; i--)
{
c = ans[num[i]];
if(ans[num[i]]==0)
continue;

if (c - ans[num[i]] == 0)
cout << num[i] << " " << ans[num[i]] << " ";
else  cout << num[i] << " " << fixed << setprecision(1) << ans[num[i]] << " ";
}
c = ans[num[0]];
if (c - ans[num[0]] == 0)
cout << num[0] << " " << ans[num[0]];
else cout << num[0] << " " << fixed << setprecision(1) << ans[num[0]];
}
system("PAUSE");
return 0;
}

说几个应该注意的问题吧,首先系数为0的项不进行输出,这个直接滤过了,当系数不为零是才能push_back进去。还有就是精确到小数点后面一位,这个我想了很久(让你不用printf的后果……) ,首先所有数字都是float形式,然后我定义一个int,用这个int减去float,如果不为零,说明是小数,就用上面说的fixed<<setprecision()<<进行输出就好。然后看了别人的答案,好一个printf啊……简单明了,printf("%0.1f", a[i]),心痛了…记住这个上午就不用这么费劲找了呵呵呵……

然后百度了别人的答案,跟我思路一样,我实在不知道自己错在哪里了QAQ 只能等哪天老宋有时间帮我看一下了哈哈哈哈哈,抱紧大腿!

今天就先这样啦,爱你!

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐