結果

問題 No.1746 Sqrt Integer Segments
ユーザー square1001
提出日時 2021-11-18 00:08:49
言語 C++14
(gcc 13.3.0 + boost 1.87.0)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 950 bytes
コンパイル時間 588 ms
コンパイル使用メモリ 59,424 KB
最終ジャッジ日時 2025-02-24 15:13:41
合計ジャッジ時間 2,136 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
main.cpp:5:1: error: ‘uint64_t’ does not name a type
    5 | uint64_t xorshift64(uint64_t h) {
      | ^~~~~~~~
main.cpp:4:1: note: ‘uint64_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
    3 | #include <algorithm>
  +++ |+#include <cstdint>
    4 | using namespace std;
main.cpp: In function ‘int main()’:
main.cpp:20:16: error: ‘uint64_t’ was not declared in this scope
   20 |         vector<uint64_t> s(N + 1);
      |                ^~~~~~~~
main.cpp:20:16: note: ‘uint64_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
main.cpp:20:24: error: template argument 1 is invalid
   20 |         vector<uint64_t> s(N + 1);
      |                        ^
main.cpp:20:24: error: template argument 2 is invalid
main.cpp:25:34: error: invalid types ‘int[int]’ for array subscript
   25 |                                 s[i + 1] ^= xorshift64(xorshift64(xorshift64(xorshift64(xorshift64(xorshift64(j))))));
      |                                  ^
main.cpp:25:100: error: ‘xorshift64’ was not declared in this scope
   25 |                                 s[i + 1] ^= xorshift64(xorshift64(xorshift64(xorshift64(xorshift64(xorshift64(j))))));
      |                                                                                                    ^~~~~~~~~~
main.cpp:25:89: error: ‘xorshift64’ was not declared in this scope
   25 |                                 s[i + 1] ^= xorshift64(xorshift64(xorshift64(xorshift64(xorshift64(xorshift64(j))))));
      |                                                                                         ^~~~~~~~~~
main.cpp:25:78: error: ‘xorshift64’ was not declared in this scope
   25 |                                 s[i + 1] ^= xorshift64(xorshift64(xorshift64(xorshift64(xorshift64(xorshift64(j))))));
      |                                                                              ^~~~~~~~~~
main.cpp:25:67: error: ‘xorshift64�

ソースコード

diff #

#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
uint64_t xorshift64(uint64_t h) {
	h *= 123456789;
	h += 9876543219;
	h ^= h << 13;
	h ^= h >> 7;
	h ^= h << 17;
	return h;
}
int main() {
	int N;
	cin >> N;
	vector<int> A(N);
	for(int i = 0; i < N; ++i) {
		cin >> A[i];
	}
	vector<uint64_t> s(N + 1);
	for(int i = 0; i < N; ++i) {
		for(int j = 2; j * j <= A[i]; ++j) {
			while(A[i] % j == 0) {
				A[i] /= j;
				s[i + 1] ^= xorshift64(xorshift64(xorshift64(xorshift64(xorshift64(xorshift64(j))))));
			}
		}
		if(A[i] != 1) {
			s[i + 1] ^= xorshift64(xorshift64(xorshift64(xorshift64(xorshift64(xorshift64(A[i]))))));
		}
	}
	for(int i = 1; i <= N; ++i) {
		s[i] ^= s[i - 1];
	}
	sort(s.begin(), s.end());
	long long ans = 0;
	int pre = 0;
	for(int i = 1; i <= N + 1; ++i) {
		if(i == N + 1 || s[i] != s[i - 1]) {
			ans += 1LL * (i - pre) * (i - pre - 1) / 2;
			pre = i;
		}
	}
	cout << ans << endl;
	return 0;
}
0