結果

問題 No.3070 Collecting Coins Speedrun 2
ユーザー pengin_2000
提出日時 2025-03-21 22:13:54
言語 C
(gcc 13.3.0)
結果
AC  
実行時間 14 ms / 2,000 ms
コード長 932 bytes
コンパイル時間 395 ms
コンパイル使用メモリ 27,092 KB
実行使用メモリ 5,888 KB
最終ジャッジ日時 2025-03-21 22:13:56
合計ジャッジ時間 1,729 ms
ジャッジサーバーID
(参考情報)
judge7 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 32
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.c: In function ‘main’:
main.c:15:9: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   15 |         scanf("%lld", &n);
      |         ^~~~~~~~~~~~~~~~~
main.c:18:17: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   18 |                 scanf("%lld", &c[i]);
      |                 ^~~~~~~~~~~~~~~~~~~~

ソースコード

diff #

#include<stdio.h>
long long int modpow(long long int a, long long int n, long long int p)
{
	long long int res = 1;
	for (; n > 0; n /= 2, a = a * a % p)
		if (n % 2 > 0)
			res = res * a % p;
	return res;
}
long long int c[100005];
long long int cnt[3];
int main()
{
	long long int n;
	scanf("%lld", &n);
	long long int i;
	for (i = 0; i < n; i++)
		scanf("%lld", &c[i]);
	const long long int p = 998244353;
	for (i = 0; i < 3; i++)
		cnt[i] = 0;
	for (i = 0; i < n; i++)
	{
		if (c[i] < 0)
			cnt[0]++;
		else if (c[i] == 0)
			cnt[1]++;
		else
			cnt[2]++;
	}
	if (c[0] >= 0)
		printf("%lld\n", modpow(2, cnt[1] + cnt[2] - 1, p));
	else if (c[n - 1] <= 0)
		printf("%lld\n", modpow(2, cnt[0] + cnt[1] - 1, p));
	else if (cnt[1] > 0)
		printf("%lld\n", modpow(2, cnt[0] - 1, p) * modpow(2, cnt[2] - 1, p) % p * 2 % p * 3 % p);
	else
		printf("%lld\n", modpow(2, cnt[0] - 1, p) * modpow(2, cnt[2] - 1, p) % p * 2 % p);
	return 0;
}
0