Привет, ребята, я пытаюсь написать программу, которая будет вычислять факториал пройденного номера и показывать его количество десятков и единиц. Это упражнение происходит от spoj.com, но, по-видимому, мой код слишком медленный, и компилятор spoj говорит, что я превысил предел времени.:/Любые идеи о том, как ускорить этот код? :) Я добавил несколько комментариев, пытаясь упростить вам понимание моего кода. #ОБНОВИТЬ. Я реорганизовал свой код и он работает также хорошо, но гораздо короче;)Факториал, десятки и единицы
#include <iostream>
#include <cmath>
using namespace std;
int tests, number, result = 1, units, tens, auxiliary;
//PROGRAM IS CALCULATING FACTORIAL AND WRITING OUT THE NUMBER OF TENS AND UNITS
int main()
{
cin >> tests; // number of integers you want to check, for example if you cin >> 5 then you have 5 numbers to check the answer
for (int i = 0; i < tests;i++) // imputation of integers to tables
{
cin >> number;
result = 1;
auxiliary = number;
for(int i=0;i<auxiliary;i++)
{
result = result * number;
number -= 1;
}
units = result % 10; // here I calculate units
tens = result % 100; // here I calculate number of tens
tens = (tens - units)/10; // here I calculate number of tens #2
cout << tens <<" "<< units << endl; // here I write out the answer which has the form "x y" <---- "tens units"
tens = 0;
units = 0;
}
return 0;
}
Это хорошая практика использования правильных имен переменных и особенно ** не ** однобуквенных имен. –
Я думаю, что переменные имени не на английском языке, делают чтение вашего кода излишне жестким ... – norok2
Я чувствую, что 'cin >>' вызывает слишком много латентности. – M4rc