第01章_プログラミング入門


アルゴリズムコンテスト入門クラシック_学習ノート_各例題とトレーニングソースファイル
第01章_プログラミング入門
Example_0108_変数交換_方法1_三変数法cpp
Example_0109_変数交換_方法2_第3の変数は利用する.cpp
Example_0111_ニワトリとウサギ数学の二元一次方程式cpp
Example_0113_三整数ソート_逐情列挙法cpp
Example_0114_三整数ソート_比较交换法cpp
Example_0115_三整数ソート_最值计算cpp
Exercise_0101_平均数(average)CPP版cpp
Exercise_0101_平均数(average)C语版cpp
Exercise_0102_温度(temperature).cpp
Exercise_0103_連続和(sum).cpp
Exercise_0104_正弦と余弦(sincos).cpp
Exercise_0105_距離(distance).cpp
Exercise_0106_偶数(odd)整数データ法を利用する.cpp
Exercise_0106_偶数(odd)余運アルゴリズムを求めるcpp
Exercise_0107_割引(discount).cpp
Exercise_0108_絶対値(abs).cpp
Exercise_0109_三角形(triangle).cpp
Exercise_0110_うるう年(leapYear).cpp
Thinking_0101_int型整数の最小値と最大値を算出する.cpp
 
 
// Example_0108_    _  1_    .cpp

/**
 *             :
 *          ,      ,  。
 *          :           ,     。
 *  :   t = a;        a          ,          。
 *        a b  ,    a    ,        b  。
 *   ,  b         ,      ,  a     t      b  。
 **/

#include <iostream>

int main()
{
	int a, b, t;
	std::cin >> a >> b;
	t = a;	//     
	a = b;
	b = t;	//     
	std::cout << a << b << std::endl;
	return 0;
}
// Example_0109_    _  2_       .cpp

/**
 *             :                  。
 *   :      ,         ,                 。
 *          :     ,     ,      ;
 *     :
 *    : a = a + b; 
 *            , a            ;
 *    : b = a - b; 
 *            ,   a,    ,         b  ,        a  ,
 *                  ,       a    b   。
 *    : a = a - b;
 *            ,   a    ,   b       a ,    a       b ,
 *                   a     b  ,   ,    a      b  。
 **/

#include <iostream>

int main()
{
	int a, b;
	std::cin >> a >> b;
	a = a + b;	//     
	b = a - b;
	a = a - b;	//     
	std::cout << a << b << std::endl;
	return 0;
}
// Example_0111_    _        .cpp

/**
 *     :    
 *     :
 *               n,    m。  n m             。
 *     ,   “No answer”(    )。
 *     : 14 32
 *     : 12 2
 *     : 10 16
 *     : No answer
 **/

/**
 *     :
 *                       ,     a,      b。
 *  : 4*b+2*a= m, a+b=n,  :a=(4n-m)/2, b=n-a.
 *   :       ,1:          ,2:       。
 **/

#include <iostream>

int main()
{
	int n, m;
	while(std::cin >> n >> m)
	{
		int a, b;
		a = (4 * n - m) / 2;
		b = n - a;
		if (m % 2 != 0 || a < 0 || b < 0)
		{
			std::cout << "No answer
"; continue; } else { std::cout << a << " " << b << std::endl; } } return 0; }
// Example_0113_     _      .cpp

/**
 *     :     
 *     :  3   ,         。
 *     :26 78 12
 *     :12 26 78
 **/

/**
 *     ,     ,       ,            。
 *        ,  ,    3*2*1+1   ,
 *       3   ,  ,  ,  。
 *         ,   2   。
 *     ,      ,  1   。
 **/

#include <stdio.h>

int main()
{
	int a, b, c;
	scanf("%d%d%d", &a, &b, &c);
	if (a <= b && b <= c) printf("%d %d %d
", a, b, c); else if(a <= c && c <= b) printf("%d %d %d
", a, c, b); else if(b <= c && c <= a) printf("%d %d %d
", b, c, a); else if(b <= a && a <= c) printf("%d %d %d
", b, a, c); else if(c <= a && a <= b) printf("%d %d %d
", c, a, b); else if(c <= b && b <= a) printf("%d %d %d
", c, b, a); return 0; }
// Example_0114_     _     .cpp

/**
 *     :     
 *     :  3   ,         。
 *     :26 78 12
 *     :12 26 78
 **/

/**
 *     ,     。
 *     ,          ,  ,    ,        。
 *           ,                ,    (  )       。
 *                 ,    (  )       ,    ,          。
 *                ,               ,           (  )。
 *   ,         ,    ,      ,       ,       。
 **/

#include <iostream>
using std::cin;
using std::cout;
using std::endl;

int main()
{
	int a, b, c, t;
    cin >> a >> b >> c;
	if (a > b) { t = a; a = b; b = t;}
	if (a > c) { t = a; a = b; b = t;}
	if (b > c) { t = a; a = b; b = t;}
	cout << a << " " << b << " " << c << endl;
	return 0;
}
// Example_0115_     _     .cpp

/**
 *     :     
 *     :  3   ,         。
 *     :26 78 12
 *     :12 26 78
 **/

/**
 *     ,     。
 *     ,    ,         ,  ,     ,  ,    。
 *           ,  。
 *   ,          (  ),      ,     ;
 *   ,          (  ),      ,     ;
 *   ,         ,       。
 **/

#include <iostream>
using std::cin;
using std::cout;
using std::endl;

int main()
{
	int a, b, c;
	int max, min, mid;

	cin >> a >> b >> c;
	max = a;
	min = a;
	if (b > max) max = b;
	if (c > max) max = c;
	if (b < min) min = b;
	if (c < min) min = c;
	mid = a + b + c - max - min;
	
	cout << max << " " << mid << " " << min << endl;
	return 0;
}
// Exercise_0101_   (average)_CPP .cpp

/**
 *     :  3   ,        ,  3   。
 **/

#include <iostream>
using std::cin;
using std::cout;

int main()
{
    double a, b, c;
	cin >> a >> b >> c;
	cout.precision(3); //        cout     ,            
    cout << (a + b + c) / 3 << std::endl;
    system("pause");
    return 0;
}
// Exercise_0101_   (average)_C   .cpp

/**
 *     :  3   ,        ,  3   。
 **/

#include <stdio.h>

int main()
{
    double a, b, c;
	//   : lf  double
	scanf("%lf%lf%lf", &a, &b, &c);
	double result = (a + b + c) / 3;
    printf("%-.3lf
", result); return 0; }
// Exercise_0102_  (temperature).cpp

/**
 *     :      f,         c,  3   。
 *   :c = 5 * (f - 32) / 9;
 **/

#include <iostream>
using std::cin;
using std::cout;

int main()
{
    double f;
	cin >> f;
	cout.precision(3);
	cout <<  5 * (f - 32) / 9 << std::endl;
    return 0;
}
// Exercise_0103_   (sum).cpp

/**
 *     :     n,   1+2+...+n  。
 **/

#include <iostream>
using std::cin;
using std::cout;

int main()
{
    long n;
	cin >> n;
	long s = 0;
	++n;
	for ( int i = 1; i < n; ++i)
	{
		s += i;
	}
	cout <<  s << std::endl;
    return 0;
}
// Exercise_0104_     (sincos).cpp

/**
 *     :     n(n<360),  n    、     。
 *   :       。
 **/

#include <iostream>
#include <cmath>
using std::cin;
using std::cout;

int main()
{
    double n;
	cin >> n;
	cout <<  sin(n) << " " << cos(n) << std::endl;
    return 0;
}
// Exercise_0105_  (distance).cpp

/**
 *     :  4    x1, y1, x2, y2,          (x1, y1)  (x2, y2)   。
 **/

#include <iostream>
#include <cmath>
using std::cin;
using std::cout;

int main()
{
    float x1, x2, y1, y2;
	cin >> x1 >> y1 >> x2 >> y2;
	// abs    
	// pow   
	// sqrt   
	cout << sqrt(pow(abs(x1 - x2), 2) + pow(abs(y1 - y2), 2)) << std::endl; 
    return 0;
}
// Exercise_0106_  (odd)_       .cpp

/**
 *     :      ,        。
 *    ,   “yes”,    “no”。
 *   :        。
 **/

#include <iostream>
using std::cin;
using std::cout;
using std::endl;

int main()
{
	int number;
	cin >> number;
	//     ,   2    ,   2        
	if (number / 2 * 2 == number){
		cout << "yes" << endl;
	}
	else{
		cout << "no" << endl;
	}
	return 0;
}
// Exercise_0106_  (odd)_     .cpp

/**
 *     :      ,        。
 *    ,   “yes”,    “no”。
 *   :        。
 **/

#include <iostream>
using std::cin;
using std::cout;
using std::endl;

int main()
{
	int number;
	cin >> number;
	//     ,   2    
	if (number % 2 == 0){
		cout << "yes" << endl;
	}
	else{
		cout << "no" << endl;
	}
	return 0;
}
// Exercise_0107_  (discount).cpp

/**
 *     :    95 ,    300 ,     。
 *         ,         (  : ),      。
 **/

#include <iostream>
using std::cin;
using std::cout;
using std::endl;

int main()
{
	const double discount = 0.85;
	const double minConsume = 300.0;
	const double singleConsume = 95.0;
	double number;
	cin >> number;
	double sum = number * singleConsume;
	if (minConsume < sum){
		sum *= discount;
	}
	cout.precision(2);
    cout.setf(std::ios_base::fixed, std::ios_base::floatfield);
	cout << sum << endl;
	return 0;
}
// Exercise_0108_   (abs).cpp

/**
 *     :       ,       ,      。
 *        math cmath
 **/

#include <iostream>
using std::cin;
using std::cout;
using std::endl;

int main()
{
	float number;
	cin >> number;
	if (0 > number){
		number = 0 - number;
	}
	cout << number << endl;
	return 0;
}
// Exercise_0109_   (triangle).cpp

/**
 *     :          (     ),                 。
 *     ,   “yes”,    ,   “no”。
 *            ,   “not a triangle”。
 **/

/**
 *     :
 *     ,          ,           ,            。
 *      :             。
 *          :       ,                。
 **/

#include <iostream>
using std::cin;
using std::cout;
using std::endl;

int main()
{
	long a, b, c;
    cin >> a >> b >> c;
	//               
	if (a + b < c || a + c < b || b + c < a){
		cout << "not a triangle" << endl;
		return 0;
	}
	//         ,           a   
	long max = a;
	if (max < b){max = b; b = a; a = max;}
	if (max < c){max = c; c = a; a = max;}
	//                       
	if (a * a == b * b + c * c){
		cout << "yes" << endl;
	}
	else{
		cout << "no" << endl;
	}
	return 0;
}
// Exercise_0110_  (leapYear).cpp

/**
 *     :    ,      。
 *    ,   “yes”,    “no”。
 **/

/**
 *     :        :  365 ,  366 。
 *     :           (     365 5  48 45.5 )   
 * ①      4      100      。( 2004     ,1901     )
 * ②      400      。( 2000    ,1900     )   
 * ③          ,       3200,     172800    。
 *     172800    ,86400     (       3200,     172800)(      365 5h48'45.5''  )。
 *       :      。
 * ①           3   (       ),                  ,            。
 * ②           2   (   ),      。
 * ③                    。
 **/

#include <iostream>
using std::cin;
using std::cout;
using std::endl;

int main()
{
	long year;
    cin >> year;
	//        
	if ( year > 172800){
		if (0 == year % 3200){
			cout << "yes" << endl;
		}
		else{
			cout << "no" << endl;
		}
	}
	//    
	else if(0 == year % 100){
		if(0 == year % 400){
			cout << "yes" << endl;
		}
		else{
			cout << "no" << endl;
		}
	}
	//    
	else{
		if (0 == year % 4){
			cout << "yes" << endl;
		}
		else{
			cout << "no" << endl;
		}
	}

	return 0;
}
// Thinking_0101_  int           .cpp

/**
 *     :
 *    : int          ,    1(    ),      ,
 *           1,             。
 *    :  , int          ,    1(    ),      ,
 *           1,             。
 **/

#include <iostream>

int int_min()
{
  int n = 0;
  while(0 >= n)
  {
     --n;
  }
  ++n;
  return n;
}

int int_max()
{
  int n = 0;
  while(n >= 0)
  {
    ++n;
  }
  --n;
  return n;
}

int main()
{
    int min = int_min();
    int max = int_max();
    std::cout << min << "  " << max << std::endl;
    system("pause");
    return 0;
}