1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | #include <climits> #include <string> #include <algorithm> std::string s; std::string& itostr(int n) { if(n==0) { s="0"; return s; } s.resize(16); char* c = &s[0]; *(long long*) c = 0; *(long long*) (c+8) = 0; long long val = n; if(val<0) { *c++='-'; val=-val; } int size; if(val>=10000) { if(val>=10000000) { if(val>=1000000000) size=10; else if(val>=100000000) size=9; else size=8; } else { if(val>=1000000) size=7; else if(val>=100000) size=6; else size=5; } } else { if(val>=100) { if(val>=1000) size=4; else size=3; } else { if(val>=10) size=2; else size=1; } } char* d = c+size-1; while(val>0) { *d--='0' + (val % 10); val /= 10; } return s; } #include <iostream> int main(void) { int i = 0; i += itostr(INT_MIN).size(); i += itostr(INT_MAX).size(); i += itostr(unsigned(INT_MAX) + 1U).size(); i += itostr(unsigned(~0)).size(); char c = CHAR_MIN; do { i += itostr(c).size(); i += itostr((11111111 * c)).size(); if (c >= CHAR_MAX) break; c++; } while (1); while (i < 100000000) i += itostr(i).size(); std::cout << i << std::endl; return i; } |
I2luY2x1ZGUgPGNsaW1pdHM+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxhbGdvcml0aG0+CgpzdGQ6OnN0cmluZyBzOwpzdGQ6OnN0cmluZyYgaXRvc3RyKGludCBuKQp7CiAgICBpZihuPT0wKQogICAgewogICAgICAgIHM9IjAiOwogICAgICAgIHJldHVybiBzOwogICAgfQogICAgcy5yZXNpemUoMTYpOwogICAgY2hhciogYyA9ICZzWzBdOwogICAgKihsb25nIGxvbmcqKSBjID0gMDsKICAgICoobG9uZyBsb25nKikgKGMrOCkgPSAwOwoKICAgIGxvbmcgbG9uZyB2YWwgPSBuOwogICAgaWYodmFsPDApCiAgICB7CiAgICAgICAgKmMrKz0nLSc7CiAgICAgICAgdmFsPS12YWw7CiAgICB9CiAgICBpbnQgc2l6ZTsKICAgIGlmKHZhbD49MTAwMDApCiAgICB7CiAgICAgICAgaWYodmFsPj0xMDAwMDAwMCkKICAgICAgICB7CiAgICAgICAgICAgIGlmKHZhbD49MTAwMDAwMDAwMCkKICAgICAgICAgICAgICAgIHNpemU9MTA7CiAgICAgICAgICAgIGVsc2UgaWYodmFsPj0xMDAwMDAwMDApCiAgICAgICAgICAgICAgICBzaXplPTk7CiAgICAgICAgICAgIGVsc2UgCiAgICAgICAgICAgICAgICBzaXplPTg7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGlmKHZhbD49MTAwMDAwMCkKICAgICAgICAgICAgICAgIHNpemU9NzsKICAgICAgICAgICAgZWxzZSBpZih2YWw+PTEwMDAwMCkKICAgICAgICAgICAgICAgIHNpemU9NjsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgc2l6ZT01OwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgCiAgICB7CiAgICAgICAgaWYodmFsPj0xMDApCiAgICAgICAgewogICAgICAgICAgICBpZih2YWw+PTEwMDApCiAgICAgICAgICAgICAgICBzaXplPTQ7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHNpemU9MzsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgaWYodmFsPj0xMCkKICAgICAgICAgICAgICAgIHNpemU9MjsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgc2l6ZT0xOwogICAgICAgIH0KICAgIH0KICAgIGNoYXIqIGQgPSBjK3NpemUtMTsKICAgIHdoaWxlKHZhbD4wKQogICAgewogICAgICAgICpkLS09JzAnICsgKHZhbCAlIDEwKTsKICAgICAgICB2YWwgLz0gMTA7CiAgICB9CiAgICByZXR1cm4gczsKfQoKI2luY2x1ZGUgPGlvc3RyZWFtPgppbnQgbWFpbih2b2lkKQp7CiAgICBpbnQgaSA9IDA7CiAgICBpICs9IGl0b3N0cihJTlRfTUlOKS5zaXplKCk7CiAgICBpICs9IGl0b3N0cihJTlRfTUFYKS5zaXplKCk7CgogICAgaSArPSBpdG9zdHIodW5zaWduZWQoSU5UX01BWCkgKyAxVSkuc2l6ZSgpOwogICAgaSArPSBpdG9zdHIodW5zaWduZWQofjApKS5zaXplKCk7IAoKCWNoYXIgYyA9IENIQVJfTUlOOwoJZG8gewoJCWkgKz0gaXRvc3RyKGMpLnNpemUoKTsKICAgICAgICAgICAgICAgIGkgKz0gaXRvc3RyKCgxMTExMTExMSAqIGMpKS5zaXplKCk7CgogICAgICAgICAgICAgICAgaWYgKGMgPj0gQ0hBUl9NQVgpIGJyZWFrOwoKCQljKys7Cgl9IHdoaWxlICgxKTsKCiAgICB3aGlsZSAoaSA8IDEwMDAwMDAwMCkKICAgICAgICBpICs9IGl0b3N0cihpKS5zaXplKCk7CgogICAgc3RkOjpjb3V0IDw8IGkgPDwgc3RkOjplbmRsOwoKICAgIHJldHVybiBpOwp9
-
upload with new input
-
result: Success time: 2.4s memory: 2856 kB returned value: 2
100000002


