自用PTA题目记录0020
以下题目序号并无实际意义
7-21 累加a-aa+aaa-aaaa+…
题目作者: 王群芳 单位: 合肥师范学院 代码长度限制: 16 KB 时间限制: 400 ms 内存限制: 64 MB
计算a-aa+aaa-aaaa+…的值,最后一项为n个a,a和n的值由键盘输入。a和n均为正整数,累加的结果定义为双精度实型。
输入格式: a和n的值在一行输入,中间以空格分隔。
输出格式: 输出时结果只保留整数部分,并按输出样例的形式输出。
输入样例1:
2 5
输出样例1:
sum=20202
输入样例2:
2 12
输出样例2:
sum=-202020202020
代码
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
string stringAddEX(string, string);
int main(int argc, char* argv[])
{
string a;
int n;
stringstream ss,ss2;
string aa = "";
string sumAdd = "";
string sumSub = "";
long intAdd;
long intSub;
cin >> a;
cin >> n;
for (int i = 1; i <= n; i++)
{
aa += a;
if (i%2)
{
sumAdd = stringAddEX(sumAdd, aa);
continue;
}else
{
sumSub = stringAddEX(sumSub, aa);
continue;
}
}
ss << sumAdd;
ss >> intAdd;
ss2 << sumSub;
ss2 >> intSub;
cout << "sum="<< intAdd - intSub;
return 0;
}
string stringAddEX(string str01, string str02)
{
string result = "";
char ch;
int chI;
int len;
bool aFlag = false;
if (str01.length() < str02.length())
{
len = str02.length() - str01.length();
for (int n = 0; n < len; n++){
str01 = "0" + str01;
}
}
if (str01.length() > str02.length())
{
len = str01.length() - str02.length();
for (int n = 0; n < len; n++){
str02 = "0" + str01;
}
}
for (int i = 0; i < str01.length(); i++)
{
chI = str01[str01.length() - 1 - i] + str02[str02.length() - 1 - i] - 96;
if (aFlag)
{
chI++;
}
if (chI >= 10)
{
aFlag = true;
ch = chI + 38;
}
else
{
ch = chI + 48;
aFlag = false;
}
result = ch + result;
}
if (aFlag)
{
result = "1" + result;
}
return result;
}
总结
C++苦手,写的很烂,见谅
PTA提交通过截图

PTA题目解析:累加序列a-aa+aaa-aaaa
这篇博客记录了PTA平台上的7-21题,即累加序列a-aa+aaa-aaaa+…的计算。题目要求计算序列的值,其中a和n由用户输入,a是正整数,n表示序列的项数。代码实现了计算过程,并展示了如何处理不同输入样例,如a=2, n=5和a=2, n=12的情况。博主提到自己C++水平有限,代码可能不佳。"
89206645,8157681,深度学习中的注意力机制详解,"['深度学习', '自然语言处理', '神经网络', '机器翻译']
4079

被折叠的 条评论
为什么被折叠?



