之前一直在做POJ和leetcode的题,然后最近几天开始做洛谷。虽然没有学到什么,但终究是觉得比最开始的水平高出了一点点(当然还是菜的掉渣)。现如今,我决定写一些博客记录菜鸡的成长历程。orz
现在洛谷我只做了十道题,大概以后一天一道吧(当然只多不少)。我很有信心保证这个数量,(哪怕微积分后天考试我也绝对不会放弃刷题!!!
那么就从今天的1015开始。上代码!!!
#include<iostream>
#include<memory.h>
#include<string>
using namespace std;
int b[1001], a[1001];
int n;
bool chec()
{
int flag = 1;
for (int i = 1; i <= a[0]; i++)
{
if (a[i] != a[a[0] - i + 1])flag = 0;
}
if (flag)return true;
else return false;
}
void addnum()
{
for (int i = 0; i <= a[0]; i++)
b[i] = a[a[0] - i + 1];
int p;
for (int i = 1; i <= a[0]; i++)
{p = 0;
a[i] += b[i];
if (a[i] >= n)
{
a[i] -= n;
p = 1;
}
a[i + 1] += p;
}
if (a[a[0] + 1] != 0)a[0]++;//人生苦短,我用python
return;
}
int main()
{
string str;
cin >> n >> str;
a[0] = str.length();
for (int i = 1;i<=a[0]; i++) {
if ('0' <= str[i-1] && str[i-1] <= '9')a[i] = str[i-1] - '0';
if ('A' <= str[i-1] && str[i-1] <= 'F')a[i] = str[i-1] - 'A' + 10;
}
int i;
for (i = 1; i <= 30; i++)
{
addnum();
if (chec())break;
}if (i == 31)cout << "Impossible!";
else cout <<"STEP="<< i;
system("pause");
return 0;
}
因为这个题真的好简单啊,我就没有写注释。想当初一直害怕进制转换来着哈哈哈哈
其实现在也害怕。如果这个题要我写乘法的话,我估计就不会了。。
以及这个题让我重新用了flag的方法判断true和false。以前都是直接判断的。用flag标志的话,能节省一行代码呢!
还有这个题给我最大的启示是输入格式。我们老师的oj网站上,输入从来都是’\n’作为结束标志的,如果你用EOF作为判断结束的标志,保准全是零分。(太真实了)因此,最开始提交的时候,我就用了getchar()==’\n’作为结束标志,不出意外,听取WA声一片。
都是泪啊。面向oj编程,不是戏言。## 12.31 洛谷1015