ФЭНДОМ


Атучин М.М.: Выкладываю тут свои решения, к сожалению C/C++, но при желании - разберётесь.

Задача 1Править

Потерялось - выложите свое

Задача 2Править

#include <cstdio>
#include <cstdlib>
#include <vector>
#include <set>
#include <map>
#include <algorithm>

const int inf = 0x3f3f3f3f;
const long long infl = 0x3f3f3f3f3f3f3f3fLL;

#define Eo(x){ std::cerr << #x << " = " << x << std::endl;}
const int maxn = 30000;
int n;
int h[maxn];
long long cost[maxn + 1];

int main(){
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
	scanf("%d", &n);
	for ( int i = 0; i < n; i++)
		scanf("%d", h + i);
	cost[0] = 0;
	for ( int i = 1; i < n; i++)
		cost[i] = std::min(cost[i - 1] + abs(h[i] - h[i - 1]), (i > 1) ? cost[i - 2] + 3 * abs(h[i] - h[i - 2]) : inf);
	printf("%Ld", cost[n - 1]);

	return 0;
}

Задача 3Править

#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <vector>
#include <set>
#include <map>
#include <algorithm>

const int inf = 0x3f3f3f3f;
const long long infl = 0x3f3f3f3f3f3f3f3fLL;
int n;

#define Eo(x){ std::cerr << #x << " = " << x << std::endl;}
int a[4] = {2, 3, 5, 7};
int cnt[4];
std::string e;

int main(){
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
	scanf("%d", &n);
	for ( int i = 0; i < 4; i++)
	while ( n % a[i] == 0){
		cnt[i] ++;
		n /= a[i];
	}
	if (n > 1){
		std::cout << "0";
		return 0;
	}
	for ( int i = 0; i < cnt[3]; i++)
		e += '7';
	for ( int i = 0; i < cnt[2]; i++)
		e += '5';

	while (cnt[1] >= 2){
		e += '9';
		cnt[1] -= 2;
	}

	while (cnt[0] >= 3){
		e += '8';
		cnt[0] -= 3;
	}
	int p = 1;
	for ( int i = 0; i < 2; i++)
	for ( int j = 0; j < cnt[i]; j++)
		p *= a[i];

	if ( p == 2 * 2 * 3)
		e += "26";
	else
		e += (p + '0');

	std::sort(e.begin(), e.end());

	if ( e == "")
		std::cout << "1";
	else
		std::cout << e;
	return 0; 
}

Задача 4Править

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <vector>
#include <string>
#include <set>
#include <map>
#include <algorithm>

const int inf = 0x3f3f3f3f;
const long long infl = 0x3f3f3f3f3f3f3f3fLL;

#define Eo(x){ std::cerr << #x << " = " << x << std::endl;}
std::string a,b;
int n, m;

int main(){
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
	std::cin >> a >> b;
	m = a.length();
	n = b.length();
	int i, j = 0;
	for ( i = 0; i < m; i++){
		while ( j < n && a[i] != b[j])
			j++;
		if ( j >= n) break;
	}
	if ( i == m)  
		printf("YES\n");
	else
		printf("NO\n");
	return 0;
}

Задача 5Править

#include <cstdio>
#include <cstdlib>
#include <vector>
#include <set>
#include <map>
#include <cmath>
#include <algorithm>

const int inf = 0x3f3f3f3f;
const long long infl = 0x3f3f3f3f3f3f3f3fLL;

#define Eo(x){ std::cerr << #x << " = " << x << std::endl;}
double x[2], y[2], r[2];

double sqr(double x){
	return x*x;
}
int main(){
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
	for ( int i = 0; i < 2; i++)
	scanf("%lf%lf%lf", x + i, y + i, r + i);

	double delta = sqrt(sqr(x[0] - x[1]) + sqr(y[0] - y[1]));

	double cr = (delta + r[0] + r[1]) / 2;

	double cx, cy;
	if ( cr > r[0] && cr > r[1]){
		cx = x[0] + (x[1] - x[0]) / delta * (cr - r[0]);
		cy = y[0] + (y[1] - y[0]) / delta * (cr - r[0]);
		printf("%lf %lf %lf\n", cr, cx, cy);
	}else{
		if (cr <= r[0])
			printf("%lf %lf %lf\n", r[0], x[0], y[0] );
		else
			printf("%lf %lf %lf\n", r[1], x[1], y[1]);
	}

	return 0;
}