// // Created by Kamil Borzym on 30/09/15. // Copyright © 2015 kam800. All rights reserved. // #include "stdio.h" #include "stdlib.h" #include "string.h" static long long tenPow(long p) { if (p<1) { return 1; } long long result = 1; while (p) { --p; result *= 10; } return result; } static long long periodForN(long n) { if (n == 0) { abort(); } if (n == 1) { return 60; } if (n == 2) { return 300; } return 15 * tenPow(n-1); } int main () { char input[19] = { 0 }; scanf("%18[0-9]", input); // char *input = "123456789012345678"; // char *input = "025"; // char *input = "222"; long n = strlen(input); long long c = atoll(input); long long period = periodForN(n); long long limit = tenPow(n); // fprintf(stderr, "n=%ld c=%lld period=%lld limit=%lld\n", n, c, period, limit); long long ttl = period; long long current = 1; long long prev = 0; while (ttl) { long long next = current + prev; if (next > limit) { next -= limit; } if (next == c) { long long k = period + period + 2 - ttl; printf("%lld\n", k); return 0; } prev = current; current = next; --ttl; } printf("NIE\n"); return 0; }
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 | // // Created by Kamil Borzym on 30/09/15. // Copyright © 2015 kam800. All rights reserved. // #include "stdio.h" #include "stdlib.h" #include "string.h" static long long tenPow(long p) { if (p<1) { return 1; } long long result = 1; while (p) { --p; result *= 10; } return result; } static long long periodForN(long n) { if (n == 0) { abort(); } if (n == 1) { return 60; } if (n == 2) { return 300; } return 15 * tenPow(n-1); } int main () { char input[19] = { 0 }; scanf("%18[0-9]", input); // char *input = "123456789012345678"; // char *input = "025"; // char *input = "222"; long n = strlen(input); long long c = atoll(input); long long period = periodForN(n); long long limit = tenPow(n); // fprintf(stderr, "n=%ld c=%lld period=%lld limit=%lld\n", n, c, period, limit); long long ttl = period; long long current = 1; long long prev = 0; while (ttl) { long long next = current + prev; if (next > limit) { next -= limit; } if (next == c) { long long k = period + period + 2 - ttl; printf("%lld\n", k); return 0; } prev = current; current = next; --ttl; } printf("NIE\n"); return 0; } |