12.31 洛谷1015

之前一直在做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

猜你喜欢

转载自blog.csdn.net/weixin_43484101/article/details/85450319
今日推荐