PAT (Basic) 1006~1010

1006. 换个格式输出整数 (15)

#include <iostream>
#include <string>

using namespace std;

int main()
{
	int n;
	cin >> n;
	int b = n / 100;
	int s = n / 10 % 10;
	int g = n % 10;
	for (int i = 0; i < b; i++)
		cout << "B";
	for (int i = 0; i < s; i++)
		cout << "S";
	for (int i = 1; i <= g; i++)
		cout << i;
	cout << endl;
	
	return 0;
}


1007. 素数对猜想 (20)

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <cstring>

using namespace std;

bool prime[100005]; // prime is true, non-prime is false

void init()
{
	memset(prime, true, sizeof(prime));
	prime[0] = false;
	prime[1] = false;
	for (int i = 2; i <= 100005 >> 1; i++)
	{
		for (int j = i << 1; j < 100005; j += i)
			prime[j] = false;
	}
}
int main()
{
	int N;
	cin >> N;
	if (N > 0 &&N < 5)
		cout << 0 << endl;
	else
	{
		init();
		int cnt = 0;
		for (int i = 2; i + 2 <= N; i++)
		{
			if (prime[i] && prime[i + 2])
				cnt++;
		}
		cout << cnt << endl;
	}
	
	return 0;
}


1008. 数组元素循环右移问题 (20)

#include <iostream>
#include <vector>

using namespace std;

void vecswap(vector<int> &v, int begin, int end)
{
	while (begin < end)
	{
		swap(v[begin], v[end]);
		begin++;
		end--;
	}
}

int main()
{
	int n, m;
	cin >> n >> m;
	vector<int> v(n);
	for (int i = 0; i < n; i++)
		cin >> v[i];
	m = m % n;
	int k = n - m;

	vecswap(v, 0, k - 1);
	vecswap(v, k, n - 1);
	vecswap(v, 0, n - 1);
	cout << v[0];
	for (int i = 1; i < n; i++)
		cout << " " << v[i];
	cout << endl;

	return 0;
}


1009. 说反话 (20)

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
//	freopen("in.txt", "r", stdin);

	vector<string> vs;
	string str;
	while (cin >> str)
	{
		vs.push_back(str);
	}
	vector<string> ::reverse_iterator rit = vs.rbegin();
	cout << *rit;
	++rit;
	for (; rit != vs.rend(); ++rit)
		cout << " " << *rit;
	cout << endl;

	return 0;
}


1010. 一元多项式求导 (25)

自己写的稀烂的代码,写得太啰嗦了。sigh...

#include <iostream>
#include <vector>

using namespace std;

int main()
{
	int a, b;
	int first = true;
	while (cin >> a >> b)
	{
		if (first && a == 0 || first && b == 0)
		{
			cout << "0 0";
			break;
		}
		if (b && first)
		{
			cout << a * b << " " << b - 1;
			first = false;
			continue;
		}
		if (b)
		{
			cout << " " << a * b << " " << b - 1;
		}
	}
	cout << endl;

	return 0;
}

别人的代码:

#include <iostream>

using namespace std;

int main()
{
	int a, b;
	bool flag = false;
	while (cin >> a >> b)
	{
		if (a*b)
		{
			if (flag)
				cout << " ";
			else
				flag = true;
			cout << a * b << " " << b - 1;
		}
	}
	if (!flag)
		cout << "0 0";

	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值