【反思与总结---17】在线OJ⑰
程序员文章站
2022-05-22 15:05:28
...
杨辉三角变形、超长整数加法
题目要求:
<1>.求第N行,第一个偶数出现的位置
<2>.如果没有偶数,则输出-1
解题思路:
<1>.我一开始以为是编程题…没做出来…
<2>.结果看到别人答案居然是找规律??
这样是不是不太合适…应该还是用正常的方法…等答案…
代码示例:
#include<iostream>
using namespace std;
int main()
{
int n;
while (cin >> n)
{
if (n <= 2)
{
cout << -1 << endl;
}
else if (n % 2 != 0)
{
cout << 2 << endl;
}
else if (n % 4 == 0)
{
cout << 3 << endl;
}
else
{
cout << 4 << endl;
}
}
return 0;
}
题目要求:
<1>.输入两个字符串数字
<2>.输出相加后的结果,string型
解题思路:
<1>.针对长短不一的对齐问题,把短的那个补到一样长,使用resize
<2>.从末尾开始相加,flag作为进位标志
<3>.相加的时候-‘0’,把相加好的结果转为char型存入C
<4>.每一位相加的结果%10就是进位的值,比如21,进位就是2
<5>.最后把C逆置,输出C
代码示例:
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
string AddLongInt(string A, string B)
{
string C;
if (A.size() > B.size())
{
int n = A.size() - B.size();
while (n)
{
B.insert(B.begin(), '0');
n--;
}
}
else
{
int n = B.size() - A.size();
while (n)
{
A.insert(A.begin(), '0');
n--;
}
}
int flag = 0;
for (int i = A.size() - 1; i >= 0; --i)
{
int temp = (A[i] - '0') + (B[i] - '0') + flag;
C += char((temp % 10) + '0');
flag = temp / 10;
}
if (flag == 1)
{
C += '1';
}
//for (auto& e : C)
//{
// e += '0';
//}
reverse(C.begin(),C.end());
return C;
}
int main()
{
string A;
string B;
while (cin >> A >> B)
{
cout << AddLongInt(A, B) << endl;
}
system("pause");
return 0;
}
上一篇: BZOJ4773: 负环