Codeforces Beta Round #65 (Div. 2)

Rating: 1400(緑) → 1558(青)
2714 Points

A - Way Too Long Words

492 Points

#include <iostream>
#include <string>
using namespace std;

int main()
{
	int n;
	cin>>n;
	for(int i = 0; i < n; i++){
		string s;
		cin>>s;
		if(s.size() > 10){
			cout<<s[0]<<(s.size() - 2)<<s[s.size() - 1]<<endl;
		}else{
			cout<<s<<endl;
		}
	}
	return 0;
}

B - Progress Bar

944 Points

#include <cstdio>
#include <vector>
using namespace std;
int main()
{
	int n, k, t;
	scanf("%d %d %d\n", &n, &k, &t);

	int sat = n * k *  t / 100;
	vector<int> v(n);
	for(int i = 0; i < n; i++){
		if(sat >= k){
			v[i] = k;
		}else if(sat < k && 0 < sat){
			v[i] = sat;
		}else if(sat <= 0){
			v[i] = 0;
		}
		sat -= k;
	}
	for(int i = 0; i < v.size(); i++){
		printf("%d%c", v[i], i != v.size() - 1 ? ' ' : '\n');
	}
	return 0;
}

C - Round Table Knights

1278 Points

#include <cstdio>
#include <vector>
using namespace std;
int main()
{
	int n;
	scanf("%d\n", &n);

	vector<int> v(n);
	for(int i = 0; i < n; i++) scanf("%d", &v[i]);

	bool res = false;
	for(int i = 1; i <= n / 2; i++){
		if(n % i) continue;
		if(n / i < 3) continue;
		for(int j = 0; j < i; j++){
			int t = 1;
			for(int k = j; k < n; k += i){
				if(!v[k]){
					t = 0;
					break;
				}
			}
			if(t) res = true;
			if(res) break;
		}
		if(res) break;
	}
	puts(res ? "YES" : "NO");
	return 0;
}

D

E

分からず。