C++学習ノート(ブラシ問題ing)航電OJ(日常水問題)

24498 ワード

航電oj 2014:ユース歌手グランプリでは、審査員が参加選手に点数をつける.選手の得点ルールは、1つの最高点と1つの最低点を除いて、平均得点を計算することです.ある選手の得点をプログラミングして出力してください.
Input
入力データには複数のグループがあり、各グループは1行を占め、各行の最初の数はn(2)である.
Output
各組の入力データに対して、選手の得点を出力し、結果は2桁の小数を保持し、各組の出力は1行を占める.
Sample Input
3 99 98 97 4 100 99 98 97
Sample Output
98.00 98.50
#include
#include 
#include
using namespace std;
int main()
{
	int  n;
	while(cin >> n) {
	double  a[100] = { 0 };
	double avg = 0;
	for(int i =0;i<n;i++){
		cin >> a[i];
	}		
	sort(a, a+n);
	for (int i = 1; i < n-1; i++) {
		avg += a[i];
	}
	avg = avg / (n - 2);
	cout << setiosflags(ios::fixed) << setprecision(2);
	cout << avg << endl;
	}
}

航電oj 2015:Problem Description
長さn(n<=100)の数列があります.この数列は2から始まるインクリメント順序の偶数として定義されています.ここでは、m個の数ごとに平均値を求め、最後にm個未満であれば実際の数で平均値を求める必要があります.プログラムは、平均値シーケンスを出力します.
Input
入力データには複数のグループがあり、各グループは1行を占め、2つの正の整数nおよびm,nおよびmの意味を上述したように含む.
Output
各入力データのセットについて、平均値シーケンスが出力され、各セットの出力が1行を占めます.
Sample Input
3 2 4 2
Sample Output
3 6 3 7
#include
using namespace std;
int main()
{
	int  n,m,x,y;
	while(cin >> n >> m) {
		int  a[100] = { 0 };
		for (int i = 0; i < 100; i++) {
			a[i] = 2 + 2 * i;
		}
		x = n / m;//    
		y = n % m;
		for (int i = 0; i < n - y; i += m) {
			double avg = 0;
			for (int j = i; j < i + m; j++) {
				avg += a[j];
			}
			avg = avg / m;
			cout << avg ;
			if (i + m != n - y) { cout << ' '; }
		}
		if (n%m != 0) {
			double avg = 0;
			for (int k = x * m; k < n; k++) {
				avg += a[k];
			}
			avg = avg / y;
			cout<<' ' << avg;
		}
		cout << endl;
	}
}

航電oj 2017:Problem Description
指定された文字列について、数値文字が表示された回数を統計します.
Input
入力データは複数行あり、最初の行は整数nであり、テストインスタンスの個数を表し、後にn行が続き、各行にはアルファベットと数字からなる文字列が含まれている.
Output
各テストインスタンスについて、この列の数値の個数を出力し、各出力が1行を占めます.
Sample Input
2 asdfasdf123123asdfasdf asdf111111111asdfasdfasdf
Sample Output
6 9
#include
#include
using namespace std;
int main()
{
	int  n,length;
	cin >> n;
	string str;
	while (n--) {
		cin >> str;
		int count = 0;
		length = str.length();
		for (int i = 0; i < length; i++) {
			if (str[i] >= 48 && str[i] <= 57) count++;
		}
		cout << count << endl;
	}	
}

航電oj 2018:Problem Description
1頭の雌牛がいて、毎年年の初めに1頭の子牛を産んでいます.子牛は4年目から毎年年初にも子牛を産む.プログラミングして実現してn年目の時、何頭の雌牛がありますか?
Input
入力データは複数のテストインスタンスからなり、各テストインスタンスは1行を占め、1つの整数n(0 n=0は入力データの終了を表し、処理しない.
Output
各試験例について、n年目の雌牛の数を出力した.出力ごとに1行を占めます.
Sample Input
2 4 5 0
Sample Output
2 4 6
#include
using namespace std;
int main()
{
	int  n, years = 1, sum = 1;
	int a[10000] = { 3,0,0,0 };
	while (cin >> n) {
		if (n == 0) break;
		while (years != n) {
			for (int i = 0; i < sum; i++) {
				a[i]++;
				if (a[i] >= 4)sum++;
			}
			years++;
		}
		
		cout << sum << endl;
	}
}

航電oj 2019 Problem Description
n(n<=100)個の整数があり、小さい順に並べられています.ここで別の整数xを与えます.この数をシーケンスに挿入し、新しいシーケンスを秩序正しくしてください.
Input
入力データには複数のテストインスタンスが含まれており、各グループのデータは2行で構成され、1行目はnとmであり、2行目は秩序化されたn個数の数列である.nとmは同時に0に入力データの終了を示し,本行は処理しない.
Output
各テストインスタンスについて、新しい要素を挿入した数列を出力します.
Sample Input
3 3 1 2 4 0 0
Sample Output
1 2 3 4
#include
using namespace std;
int main()
{
	int  n,m;
	int a[101] = { 0 };
	while (cin >> n >> m) {
		if (n == 0 && m == 0) break;
		int flag = 0;
		for (int i = 0; i < n; i++) {
			cin >> a[i];
		}
		for (int i = 0; i < n; i++) {
			if (a[i] > m) {
				for (int j = n; j > i; j--) {
					a[j] = a[j - 1];
				}
				a[i] = m;
				break;
			}
		}
		for (int i = 0; i <= n; i++) {
			if (flag > 0) { cout << ' '; }
			if (i == n) { cout << a[i] << endl; }
			else{ cout << a[i]; }			
			flag++;
		}
	}
}