제출 #22729

#제출 시각아이디문제언어결과실행 시간메모리
22729도치피치피보족 (#40)Fully Generate (KRIII5_FG)C++11
0 / 7
0 ms16740 KiB
#include <cstdio> typedef unsigned long long int P; const P mod = 1000000007; P index[1000001][2]; P N; P curr = 3, num = 3, ind = 4; P p = 1; P whatindexinnum(P curr){ for (p = p;; p++) if (curr >= index[p][0] && curr <= index[p][1]) return p; } P pow(P x, P y){ if (y == 0) return 1; else if (y == 1) return x % mod; if (y & 1) return x % mod* (pow(x, y - 1) % mod); else return (pow(x % mod, y / 2) % mod * pow(x %mod, y / 2) % mod) % mod; } int main(){ P ans = 4; index[1][0] = index[1][1] = 1; index[2][0] = 2, index[2][1] = 3; scanf("%lld", &N); if (N == 1){ printf("1\n"); return 0; } else if (N == 2){ printf("2\n"); return 0;} else if (N == 3){ printf("4\n"); return 0;} else if (N == 4){ printf("12\n"); return 0;} while (1){ long long len; index[num][0] = ind; index[num][1] = ind + whatindexinnum(curr) - 1; len = index[num][1] - index[num][0] + 1; if (N >= index[num][0] && N <= index[num][1]){ len = N - index[num][0] + 1; ans = ((ans %mod)* (pow(num, len) % mod)) % mod; break; } else if (index[num][1] < N){ ans = ((ans%mod)* (pow(num, len) % mod)) % mod; } ind = index[num][1] + 1; num++; curr++; } printf("%lld\n", ans); return 0; }

컴파일 시 표준 에러 (stderr) 메시지

FG.cpp: In function 'int main()':
FG.cpp:24:19: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld", &N);
                   ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...