| Task: | Kertoma |
| Sender: | ToukoP |
| Submission time: | 2022-11-09 22:15:19 +0200 |
| Language: | C++ (C++11) |
| Status: | READY |
| Result: | 46 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 22 |
| #2 | ACCEPTED | 24 |
| #3 | WRONG ANSWER | 0 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
| #2 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
| #3 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
| #4 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
| #5 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
| #6 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
| #7 | ACCEPTED | 0.00 s | 2, 3 | details |
| #8 | ACCEPTED | 0.00 s | 2, 3 | details |
| #9 | ACCEPTED | 0.00 s | 2, 3 | details |
| #10 | ACCEPTED | 0.00 s | 2, 3 | details |
| #11 | WRONG ANSWER | 0.00 s | 3 | details |
| #12 | WRONG ANSWER | 0.00 s | 3 | details |
| #13 | WRONG ANSWER | 0.00 s | 3 | details |
| #14 | WRONG ANSWER | 0.00 s | 3 | details |
| #15 | WRONG ANSWER | 0.00 s | 3 | details |
| #16 | WRONG ANSWER | 0.00 s | 3 | details |
Code
#include <iostream>
#include <cmath>
#include <string>
#include <bits/stdc++.h>
using namespace std;
/*
long int cache[1000];
int cacheMax = 1;
long int factorial(long int n) {
cout << "end" << endl;
if (cacheMax > n) {
//return cache[n];
}
long int r = 1; //cacheMax <= 1 ? 1 : cache[cacheMax];
for (long int i = cacheMax; i <= n; i++) {
r *= i;
cacheMax = i;
cache[i] = r;
}
return r;
}
bool checkNum(long int x, int * digits) {
long int * d = getDigits(x);
//cout << "num: " << x << endl;
for (int i = 0; i < 10; i++) {
//cout << " " << i << " - " << digits[i] << " - " << d[i] << endl;
if (digits[i] != d[i]) {
return false;
}
}
return true;
}
int getDigitCount(long int x) {
return (int) x / pow(10, to_string(x).length());
}
void old() {
int digits[10];
int digitCount = 0;
for (int i = 0; i < 10; i++) {
cin >> digits[i];
digitCount += digits[i];
}
long int min = 10, max = 1000000000;
long int a = min;
long int b = ((max - min) / 2) + min;
long int c = max;
while (true) {
if (getDigitCount(factorial(b)) > digitCount) {
cout << "up" << endl;
c = b;
} else {
cout << "down" << endl;
a = b;
}
b = ((c - a) / 2) + a;
//cout << (b > 30) << ": " << a << ", " << b << ", " << c << endl;
cout << (b > 30) << " - " << b << endl;
if (c - a < 2) {
cout << b << endl;
break;
}
}
cout << "end" << endl;
}
*/
long int * getDigits(long int x) {
static long int digits[10];
for (int i = 0; i < 10; i++) {
digits[i] = 0;
}
string str = to_string(x);
//cout << endl << "str: " << str << endl;
for (long unsigned int i = 0; i < str.length(); i++) {
digits[stoi(str.substr(i,1))]++;
}
//for (int i = 0; i < 10; i++) {
//cout << digits[i] << endl;
//}
//cout << endl;
return digits;
}
bool checkNum(long int x, int * digits) {
long int * d = getDigits(x);
//cout << "num: " << x << endl;
for (int i = 0; i < 10; i++) {
//cout << " " << i << " - " << digits[i] << " - " << d[i] << endl;
if (digits[i] != d[i]) {
return false;
}
}
return true;
}
bool calcSubTen(int * digits) {
int r = 1;
for (int i = 2; i < 10; i++) {
r *= i;
//cout << "i: " << i << " r: " << r << endl;
if (checkNum(r, digits)) {
cout << i;
return true;
}
//cout << endl;
}
return false;
}
int main() {
int digits[10];
int digitCount = 0;
for (int i = 0; i < 10; i++) {
cin >> digits[i];
digitCount += digits[i];
}
if (calcSubTen(digits)) {
return 0;
}
//double m = log10(1);
double value = 1;
for (int i = 1; i < 1000; i++) {
double m = log10(i);
value += m;
if (value > digitCount) {
cout << i;
break;
}
}
return 0;
}Test details
Test 1
Group: 1, 2, 3
Verdict: ACCEPTED
| input |
|---|
| 0 0 1 0 0 0 0 0 0 0 |
| correct output |
|---|
| 2 |
| user output |
|---|
| 2 |
Test 2
Group: 1, 2, 3
Verdict: ACCEPTED
| input |
|---|
| 0 0 0 0 0 0 1 0 0 0 |
| correct output |
|---|
| 3 |
| user output |
|---|
| 3 |
Test 3
Group: 1, 2, 3
Verdict: ACCEPTED
| input |
|---|
| 0 0 1 0 1 0 0 0 0 0 |
| correct output |
|---|
| 4 |
| user output |
|---|
| 4 |
Test 4
Group: 1, 2, 3
Verdict: ACCEPTED
| input |
|---|
| 2 0 1 1 0 0 1 0 2 0 |
| correct output |
|---|
| 10 |
| user output |
|---|
| 10 |
Test 5
Group: 1, 2, 3
Verdict: ACCEPTED
| input |
|---|
| 9 3 1 1 2 2 3 1 6 1 |
| correct output |
|---|
| 27 |
| user output |
|---|
| 27 |
Test 6
Group: 1, 2, 3
Verdict: ACCEPTED
| input |
|---|
| 10 4 3 4 3 2 2 4 3 7 |
| correct output |
|---|
| 36 |
| user output |
|---|
| 36 |
Test 7
Group: 2, 3
Verdict: ACCEPTED
| input |
|---|
| 71 53 36 30 25 29 42 24 34 29 |
| correct output |
|---|
| 199 |
| user output |
|---|
| 199 |
Test 8
Group: 2, 3
Verdict: ACCEPTED
| input |
|---|
| 71 33 46 38 27 45 36 21 35 35 |
| correct output |
|---|
| 205 |
| user output |
|---|
| 205 |
Test 9
Group: 2, 3
Verdict: ACCEPTED
| input |
|---|
| 93 38 35 26 43 54 38 25 41 34 |
| correct output |
|---|
| 222 |
| user output |
|---|
| 222 |
Test 10
Group: 2, 3
Verdict: ACCEPTED
| input |
|---|
| 100 33 33 45 36 43 38 54 56 36 |
| correct output |
|---|
| 242 |
| user output |
|---|
| 242 |
Test 11
Group: 3
Verdict: WRONG ANSWER
| input |
|---|
| 3419 1797 1845 1849 1879 1791 ... |
| correct output |
|---|
| 5959 |
| user output |
|---|
| (empty) |
Test 12
Group: 3
Verdict: WRONG ANSWER
| input |
|---|
| 4776 2695 2709 2781 2616 2753 ... |
| correct output |
|---|
| 8391 |
| user output |
|---|
| (empty) |
Test 13
Group: 3
Verdict: WRONG ANSWER
| input |
|---|
| 20097 12282 12229 12214 12406 ... |
| correct output |
|---|
| 32001 |
| user output |
|---|
| (empty) |
Test 14
Group: 3
Verdict: WRONG ANSWER
| input |
|---|
| 47934 29918 29878 29713 29984 ... |
| correct output |
|---|
| 71718 |
| user output |
|---|
| (empty) |
Test 15
Group: 3
Verdict: WRONG ANSWER
| input |
|---|
| 84691 54156 54277 54533 54296 ... |
| correct output |
|---|
| 123123 |
| user output |
|---|
| (empty) |
Test 16
Group: 3
Verdict: WRONG ANSWER
| input |
|---|
| 99098 63339 63878 64182 63904 ... |
| correct output |
|---|
| 142663 |
| user output |
|---|
| (empty) |
