Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. #include <iostream>
  2. #include <deque>
  3. #include "catch.hpp"
  4. using namespace std;
  5. long M;
  6. int sum(unsigned long N) {
  7. deque<int> folder; //объявляем дек
  8.  
  9. if (N<=0) {
  10. return 0; //выход
  11. }
  12. folder.push_back(N%10); // Добавляем первую цифру числа N в дек
  13. N/=10; // делим на 10
  14. while (N!=0){ //работаем с числом в цикле
  15. for (int i=0; i<folder.size(); i++){
  16. if (folder.at(i) == N%10) //проверяем на отсутствие совпадающих цифр
  17. i+=folder.size();
  18. if (i == folder.size() -1)
  19. folder.push_back(N%10);
  20. }
  21. N/=10; //переходим к следующему разряду
  22. }
  23.  
  24. return folder.size(); //возвращаем размер дека
  25. }
  26. int main() {
  27. cin >> M; //ввод числа с клавиатуры
  28. if (M>0) {
  29. cout << "sum:" << sum(M); //работаем с натуральным числом
  30. }
  31. else cout << "Error: input must be > 0"; //число не натуральное – выводим ошибку
  32. }
  33.  
  34. double timeTest(unsigned long n) {
  35. high_resolution_clock::time_point startTime = high_resolution_clock::now();
  36. sum(n);
  37. high_resolution_clock::time_point finishTime = high_resolution_clock::now();
  38. duration<double> elapsedTime = duration_cast<duration<double>>(finishTime - startTime);
  39. return elapsedTime.count();
  40. }
  41.  
  42. TEST_CASE( "sum", "[sum]" ) {
  43. REQUIRE( sum(12340054) == 6 );
  44. REQUIRE( sum(302) == 3 );
  45. REQUIRE( sum(121221) == 2 );
  46. REQUIRE( sum(88005553535) == 4 );
  47. REQUIRE( sum(0894953787) == 6 );
  48. REQUIRE( sum(101001) == 2 );
  49. }
  50.  
  51. TEST_CASE( "time", "[time]" ) {
  52. unsigned long n = 1234567890987654321;
  53. REQUIRE(timeTest(n) <= 10.0);
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement