All pastes #2095667 Raw Edit

Mine

public cpp v1 · immutable
#2095667 ·published 2011-11-25 08:40 UTC
rendered paste body
// prog1.cpp: определяет точку входа для консольного приложения.////  1  Найдите все трехзначные числа, равные среднему арифметическому чисел,//     полученных из каждого такого числа всеми перестановками (включая//     тождественные) его цифр.#include "stdafx.h"// В структуре 3 числа - первая вторая и третья цифрыstruct digits3{	unsigned char a[3];};// Функция разбивает число value на цифры и помещает всё в структуруdigits3	value_to_digits (int value){	digits3 a;	a.a[0] = value / 100;	a.a[1] = (value % 100) / 10;	a.a[2] = value % 10;	return a;}// Функция получает из 3 цифр одно числоint		digits_to_value (unsigned char a, unsigned char b, unsigned char c){	return c + b*10 + a*100;}int _tmain(int argc, _TCHAR* argv[]){	setlocale(LC_ALL,"RUSSIAN");			// Иначе не будет русского языка о_О	int count = 0;	for (int i = 100; i < 1000; i++)	{		digits3 i3 = value_to_digits(i);		int summ = 0;	// Для среднего арифметического получаем сумму всех перестановок						// Количество всех возможных перестановок постоянно и равно 3! тоесть 6		summ += i;		summ += digits_to_value(i3.a[1], i3.a[3], i3.a[2]);		summ += digits_to_value(i3.a[2], i3.a[3], i3.a[1]);		summ += digits_to_value(i3.a[2], i3.a[1], i3.a[3]);		summ += digits_to_value(i3.a[3], i3.a[1], i3.a[2]);		summ += digits_to_value(i3.a[3], i3.a[2], i3.a[1]);		// Если будем делить на 6 для получения среднего арифметического то получим		// погрешность либо при переводе в double либо при округлении до целого		// Лучше i умножить на 6 и сравнить так		if (i*6 == summ)		{			_tprintf(_T("%5d"), i);			count++;			if ((count) % 16 == 0) _tprintf(_T("\n"));		}	}	return 0;}