結果
| 問題 |
No.557 点対称
|
| ユーザー |
|
| 提出日時 | 2019-04-15 22:11:25 |
| 言語 | C (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 1 ms / 2,000 ms |
| コード長 | 413 bytes |
| コンパイル時間 | 256 ms |
| コンパイル使用メモリ | 29,184 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-09-22 08:06:41 |
| 合計ジャッジ時間 | 994 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 30 |
ソースコード
#include <stdio.h>
#define MOD(i) ((i)%1000000007)
int main()
{
long long N;
scanf("%lld", &N);
long long n = 1;
long long m = 5;
if (N == 1)
n = 2; // single: 1, 8
else if (N & 1)
n = 3; // odd center: 0, 1, 8
N >>= 1;
if (N > 0) {
N--;
n *= 4; // both ends: 1, 8, 6, 9
}
for ( ; N; N >>= 1) {
if (N & 1)
n = MOD(n * m);
m = MOD(m * m);
}
printf("%lld\n", n);
return 0;
}