시간 제한메모리 제한제출정답맞힌 사람정답 비율
1.5 초 (추가 시간 없음) (하단 참고)512 MB230373020.270%

문제

2020년을 보내고 2021년을 맞이하는 기념으로 Albert는 재미있는 문제를 풀기로 했다. 양의 정수 중 첫 네 숫자가 "2020"이며 마지막 네 숫자가 "2021"이면 "안녕한 정수" 라고 정의 하자. 가령 202021 이나 20202021은 "안녕한 정수" 이며, 2020021 이나 2020221 은 안녕한 정수가 아니다.

Albert는 n개의 정수 A[1], A[2], ..., A[n]중 두 수를 골라 더했을 때 그 합이 "안녕한 정수"가 되는 쌍의 개수를 알고 싶다. 즉, 1 ≤ i < j ≤ n 을 만족하는 (i, j) 쌍 중 A[i] + A[j]가 안녕한 정수인 쌍의 개수를 알고 싶다. 예를 들어 A = [101010, 101010, 101011, 101011], 즉 n = 4개의 정수가 있다고 하자. 이 경우 A[1] + A[3] = A[1] + A[4] = A[2] + A[3] = A[2] + A[4] = 202021 이므로 총 4개의 쌍이 존재한다 ((1, 3), (1, 4), (2, 3), (2, 4)).

입력으로 n개의 정수가 주어졌을 때, 합이 안녕한 정수가 되도록 하는 쌍의 개수를 출력하시오.

입력

첫 줄에 테스트 케이스의 수 T가 주어진다. 각 테스트 케이스는 두 줄로 구성된다.

첫 줄에 정수의 개수 n이 주어진다. 다음 줄에 n개의 정수가 공백으로 구분되어 주어진다.

출력

각 테스트 케이스에 대해 합이 안녕한 정수가 되는 쌍의 개수를 출력한다.

제한

  • 1 ≤ T ≤ 10
  • 2 ≤ n ≤ 100,000
  • -228 ≤ A[i] ≤ 228

예제 입력 1

3
4
101010 101010 101011 101011
5
100000 100000 100000 101011 101011
4
202021 0 1 202020

예제 출력 1

4
0
2

케이스 1: 본문에서 다루었다.

케이스 2: 어떤 두 수를 골라도 합이 안녕한 정수가 되지 않는다.

케이스 3: (1, 2)와 (3, 4) 두 쌍이 존재한다 (수들의 합은 202021 + 0 과 1 + 202020 이다).

W3sicHJvYmxlbV9pZCI6IjIwOTE2IiwicHJvYmxlbV9sYW5nIjoiMCIsInRpdGxlIjoiXHVjNTQ4XHViMTU1IDIwMjAgXHVjNTQ4XHViMTU1IDIwMjEiLCJkZXNjcmlwdGlvbiI6IjxwPjIwMjBcdWIxNDRcdWM3NDQgXHViY2Y0XHViMGI0XHVhY2UwIDIwMjFcdWIxNDRcdWM3NDQgXHViOWRlXHVjNzc0XHVkNTU4XHViMjk0IFx1YWUzMFx1YjE1MFx1YzczY1x1Yjg1YyBBbGJlcnRcdWIyOTQgXHVjN2FjXHViYmY4XHVjNzg4XHViMjk0IFx1YmIzOFx1YzgxY1x1Yjk3YyBcdWQ0ODBcdWFlMzBcdWI4NWMgXHVkNTg4XHViMmU0LiBcdWM1OTFcdWM3NTggXHVjODE1XHVjMjE4IFx1YzkxMSBcdWNjYWIgXHViMTI0IFx1YzIyYlx1Yzc5MFx1YWMwMCAmcXVvdDsyMDIwJnF1b3Q7XHVjNzc0XHViYTcwIFx1YjljOFx1YzljMFx1YjljOSBcdWIxMjQgXHVjMjJiXHVjNzkwXHVhYzAwICZxdW90OzIwMjEmcXVvdDtcdWM3NzRcdWJhNzQmbmJzcDsmcXVvdDs8c3Ryb25nPlx1YzU0OFx1YjE1NVx1ZDU1YyBcdWM4MTVcdWMyMTg8XC9zdHJvbmc+JnF1b3Q7IFx1Yjc3Y1x1YWNlMCBcdWM4MTVcdWM3NTggXHVkNTU4XHVjNzkwLiBcdWFjMDBcdWI4MzkgMjAyMDIxIFx1Yzc3NFx1YjA5OCAyMDIwMjAyMVx1Yzc0MCAmcXVvdDtcdWM1NDhcdWIxNTVcdWQ1NWMgXHVjODE1XHVjMjE4JnF1b3Q7IFx1Yzc3NFx1YmE3MCwgMjAyMDAyMSBcdWM3NzRcdWIwOTggMjAyMDIyMSBcdWM3NDAgXHVjNTQ4XHViMTU1XHVkNTVjIFx1YzgxNVx1YzIxOFx1YWMwMCBcdWM1NDRcdWIyYzhcdWIyZTQuPFwvcD5cclxuXHJcbjxwPkFsYmVydFx1YjI5NCBuXHVhYzFjXHVjNzU4IFx1YzgxNVx1YzIxOCBBWzFdLCBBWzJdLCAuLi4sIEFbbl1cdWM5MTEgXHViNDUwIFx1YzIxOFx1Yjk3YyBcdWFjZThcdWI3N2MgXHViMzU0XHVkNTg4XHVjNzQ0IFx1YjU0YyBcdWFkZjggXHVkNTY5XHVjNzc0ICZxdW90O1x1YzU0OFx1YjE1NVx1ZDU1YyBcdWM4MTVcdWMyMTgmcXVvdDtcdWFjMDAgXHViNDE4XHViMjk0IFx1YzMwZFx1Yzc1OCBcdWFjMWNcdWMyMThcdWI5N2MgXHVjNTRjXHVhY2UwIFx1YzJmNlx1YjJlNC4gXHVjOTg5LCAxICZsZTsgaSAmbHQ7IGogJmxlOyBuIFx1Yzc0NCBcdWI5Y2NcdWM4NzFcdWQ1NThcdWIyOTQgKGksIGopIFx1YzMwZCBcdWM5MTEgQVtpXSArIEFbal1cdWFjMDAgXHVjNTQ4XHViMTU1XHVkNTVjIFx1YzgxNVx1YzIxOFx1Yzc3OCBcdWMzMGRcdWM3NTggXHVhYzFjXHVjMjE4XHViOTdjIFx1YzU0Y1x1YWNlMCBcdWMyZjZcdWIyZTQuIFx1YzYwOFx1Yjk3YyBcdWI0ZTRcdWM1YjQgQSA9IFsxMDEwMTAsIDEwMTAxMCwgMTAxMDExLCAxMDEwMTFdLCBcdWM5ODkgbiA9IDRcdWFjMWNcdWM3NTggXHVjODE1XHVjMjE4XHVhYzAwIFx1Yzc4OFx1YjJlNFx1YWNlMCBcdWQ1NThcdWM3OTAuIFx1Yzc3NCBcdWFjYmRcdWM2YjAgQVsxXSArIEFbM10gPSBBWzFdICsgQVs0XSA9IEFbMl0gKyBBWzNdID0gQVsyXSArIEFbNF0gPSAyMDIwMjEgXHVjNzc0XHViYmMwXHViODVjIFx1Y2QxZCA0XHVhYzFjXHVjNzU4IFx1YzMwZFx1Yzc3NCBcdWM4NzRcdWM3YWNcdWQ1NWNcdWIyZTQgKCgxLCAzKSwgKDEsIDQpLCAoMiwgMyksICgyLCA0KSkuPFwvcD5cclxuXHJcbjxwPlx1Yzc4NVx1YjgyNVx1YzczY1x1Yjg1YyBuXHVhYzFjXHVjNzU4IFx1YzgxNVx1YzIxOFx1YWMwMCBcdWM4ZmNcdWM1YjRcdWM4NGNcdWM3NDQgXHViNTRjLCBcdWQ1NjlcdWM3NzQgXHVjNTQ4XHViMTU1XHVkNTVjIFx1YzgxNVx1YzIxOFx1YWMwMCBcdWI0MThcdWIzYzRcdWI4NWQgXHVkNTU4XHViMjk0IFx1YzMwZFx1Yzc1OCBcdWFjMWNcdWMyMThcdWI5N2MgXHVjZDljXHViODI1XHVkNTU4XHVjMmRjXHVjNjI0LjxcL3A+XHJcbiIsImlucHV0IjoiPHA+XHVjY2FiIFx1YzkwNFx1YzVkMCBcdWQxNGNcdWMyYTRcdWQyYjggXHVjZjAwXHVjNzc0XHVjMmE0XHVjNzU4IFx1YzIxOCBUXHVhYzAwIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gXHVhYzAxIFx1ZDE0Y1x1YzJhNFx1ZDJiOCBcdWNmMDBcdWM3NzRcdWMyYTRcdWIyOTQgXHViNDUwIFx1YzkwNFx1Yjg1YyBcdWFkNmNcdWMxMzFcdWI0MWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1Y2NhYiBcdWM5MDRcdWM1ZDAgXHVjODE1XHVjMjE4XHVjNzU4IFx1YWMxY1x1YzIxOCBuXHVjNzc0IFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gXHViMmU0XHVjNzRjIFx1YzkwNFx1YzVkMCBuXHVhYzFjXHVjNzU4IFx1YzgxNVx1YzIxOFx1YWMwMCBcdWFjZjVcdWJjMzFcdWM3M2NcdWI4NWMgXHVhZDZjXHViZDg0XHViNDE4XHVjNWI0IFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5cdWFjMDEgXHVkMTRjXHVjMmE0XHVkMmI4IFx1Y2YwMFx1Yzc3NFx1YzJhNFx1YzVkMCBcdWIzMDBcdWQ1NzQgXHVkNTY5XHVjNzc0IFx1YzU0OFx1YjE1NVx1ZDU1YyBcdWM4MTVcdWMyMThcdWFjMDAgXHViNDE4XHViMjk0IFx1YzMwZFx1Yzc1OCBcdWFjMWNcdWMyMThcdWI5N2MgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LjxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjEiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ190Y29kZSI6IktvcmVhbiIsImxpbWl0IjoiPHVsPlxyXG5cdDxsaT4xICZsZTsgVCAmbGU7IDEwPFwvbGk+XHJcblx0PGxpPjIgJmxlOyBuICZsZTsgMTAwLDAwMDxcL2xpPlxyXG5cdDxsaT4tMjxzdXA+Mjg8XC9zdXA+Jm5ic3A7JmxlOyZuYnNwO0FbaV0gJmxlOyZuYnNwOzI8c3VwPjI4PFwvc3VwPjxcL2xpPlxyXG48XC91bD5cclxuIiwic2FtcGxlX2V4cGxhaW5fMSI6IjxwPlx1Y2YwMFx1Yzc3NFx1YzJhNCAxOiBcdWJjZjhcdWJiMzhcdWM1ZDBcdWMxMWMgXHViMmU0XHViOGU4XHVjNWM4XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWNmMDBcdWM3NzRcdWMyYTQgMjogXHVjNWI0XHViNWE0IFx1YjQ1MCBcdWMyMThcdWI5N2MgXHVhY2U4XHViNzdjXHViM2M0IFx1ZDU2OVx1Yzc3NCBcdWM1NDhcdWIxNTVcdWQ1NWMgXHVjODE1XHVjMjE4XHVhYzAwIFx1YjQxOFx1YzljMCBcdWM1NGFcdWIyOTRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1Y2YwMFx1Yzc3NFx1YzJhNCAzOiAoMSwgMilcdWM2NDAgKDMsIDQpIFx1YjQ1MCBcdWMzMGRcdWM3NzQgXHVjODc0XHVjN2FjXHVkNTVjXHViMmU0IChcdWMyMThcdWI0ZTRcdWM3NTggXHVkNTY5XHVjNzQwIDIwMjAyMSArIDAgXHVhY2ZjIDEgKyAyMDIwMjAgXHVjNzc0XHViMmU0KS48XC9wPlxyXG4ifSx7InByb2JsZW1faWQiOiIyMDkxNiIsInByb2JsZW1fbGFuZyI6IjEiLCJ0aXRsZSI6IkJ5ZSAyMDIwIEhlbGxvIDIwMjEiLCJkZXNjcmlwdGlvbiI6IjxwPkFsYmVydCB3YW50cyB0byBzb2x2ZSBhIHByb2JsZW0gYXMgMjAyMCBpcyBvdmVyIGFuZCAyMDIxIGlzIGhlcmUuIEZvciBhbnkgcG9zaXRpdmUgaW50ZWdlciwgaWYgdGhlIGZpcnN0IGZvdXIgZGlnaXRzIGFyZSAmcXVvdDsyMDIwJnF1b3Q7IGFuZCB0aGUgbGFzdCBmb3VyIGRpZ2l0cyBhcmUgJnF1b3Q7MjAyMSZxdW90OywgdGhlbiB0aGUgbnVtYmVyIGlzIHNhaWQgdG8gYmUgPGVtPjxzdHJvbmc+bWVhbmluZ2Z1bDxcL3N0cm9uZz48XC9lbT4uIEZvciBpbnN0YW5jZSwgMjAyMDIxIGFuZCAyMDIwMjAyMSBhcmUgbWVhbmluZ2Z1bCwgYnV0IDIwMjAwMjEgb3IgMjAyMDIyMSBhcmUgbm90LjxcL3A+XHJcblxyXG48cD5HaXZlbiBuIGludGVnZXJzIEFbMV0sIEFbMl0sIC4uLiwgQVtuXSwgQWxiZXJ0IHdhbnRzIHRvIGNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHBhaXJzIG9mIGludGVnZXJzIHdob3NlIHN1bSBpcyAmcXVvdDttZWFuaW5nZnVsLiZxdW90OyBUaGF0IGlzLCBoZSB3YW50cyB0byBjb21wdXRlIHRoZSBudW1iZXIgb2YgcGFpcnMgKGksIGopIHdpdGgmbmJzcDsxICZsZTsgaSAmbHQ7IGogJmxlOyBuIHN1Y2ggdGhhdCBBW2ldICsgQVtqXSBpcyBtZWFuaW5nZnVsLiBGb3IgaW5zdGFuY2UsIHN1cHBvc2UgdGhhdCB0aGVyZSBhcmUgbiA9IDQgaW50ZWdlcnMsIEEgPSBbMTAxMDEwLCAxMDEwMTAsIDEwMTAxMSwgMTAxMDExXS4gSW4gdGhpcyBjYXNlLCBBWzFdICsgQVszXSA9IEFbMV0gKyBBWzRdID0gQVsyXSArIEFbM10gPSBBWzJdICsgQVs0XSA9IDIwMjAyMSwgYW5kIHRodXMgdGhlcmUgYXJlIGZvdXIgcGFpcnMgb2YgaW50ZXJlc3Q6ICgoMSwgMyksICgxLCA0KSwgKDIsIDMpLCAoMiwgNCkpLjxcL3A+XHJcblxyXG48cD5HaXZlbiBuIGludGVnZXJzLCBjb21wdXRlIHRoZSBudW1iZXIgb2YgcGFpcnMgb2YgaW50ZWdlcnMgd2hvc2Ugc3VtIGlzIG1lYW5pbmdmdWwuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5UaGUgZmlyc3QgbGluZSB3aWxsIGNvbnRhaW4gdGhlIG51bWJlciBvZiB0ZXN0IGNhc2VzLCBULiBFYWNoIHRlc3QgY2FzZSB3aWxsIGJlIGRlc2NyaWJlZCBpbiB0d28gbGluZXMuPFwvcD5cclxuXHJcbjxwPlRoZSBmaXJzdCBsaW5lIHdpbGwgY29udGFpbiBuLCB0aGUgbnVtYmVyIG9mIGludGVnZXJzIHRvIGJlIGdpdmVuLiBUaGUgc2Vjb25kIGxpbmUgd2lsbCBjb250YWluIG4gaW50ZWdlcnMgKHNlcGFyYXRlZCBieSBhIHdoaXRlc3BhY2UpLjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPkZvciBlYWNoIHRlc3QgY2FzZSwgb3V0cHV0IHRoZSBudW1iZXIgb2YgcGFpcnMgb2YgbnVtYmVycyB3aG9zZSBzdW0gaXMgbWVhbmluZ2Z1bC48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIwIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJFbmdsaXNoIiwibGltaXQiOiI8dWw+XHJcblx0PGxpPjEgJmxlOyBUICZsZTsgMTA8XC9saT5cclxuXHQ8bGk+MiAmbGU7IG4gJmxlOyAxMDAsMDAwPFwvbGk+XHJcblx0PGxpPi0yPHN1cD4yODxcL3N1cD4mbmJzcDsmbGU7Jm5ic3A7QVtpXSAmbGU7Jm5ic3A7MjxzdXA+Mjg8XC9zdXA+PFwvbGk+XHJcbjxcL3VsPlxyXG4iLCJzYW1wbGVfZXhwbGFpbl8xIjoiPHA+Q2FzZSAxOiBFeHBsYWluZWQgaW4gdGhlIHByb2JsZW0gc3RhdGVtZW50LjxcL3A+XHJcblxyXG48cD5DYXNlIDI6IE5vIHBhaXIgb2YgaW50ZWdlcnMgYWRkcyB0byBhIG1lYW5pbmdmdWwgbnVtYmVyLjxcL3A+XHJcblxyXG48cD5DYXNlIDM6IFRoZXJlIGV4aXN0IHR3byBwYWlyczogKDEsIDIpIGFuZCAoMywgNCkgYXMmbmJzcDsyMDIwMjEgKyAwIGFuZCZuYnNwOzEgKyAyMDIwMjAgYXJlIGJvdGggbWVhbmluZ2Z1bC48XC9wPlxyXG4ifV0=

시간 제한

  • Java 8: 2.5 초
  • Python 3: 3 초
  • Java 8 (OpenJDK): 2.5 초
  • Java 11: 2.5 초
  • Kotlin (JVM): 2.5 초
  • Java 15: 2.5 초