求解代码
publicstaticvoidmain(String[]args)throwsIOException{BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));StringTokenizerin=newStringTokenizer(br.readLine());PrintWriterout=newPrintWriter(newOutputStreamWriter(System.out));HashMap<Long,Long>hmap=newHashMap<>();longtotal=0;intn=Integer.parseInt(in.nextToken());for(inti=1;i<=n;i++){in=newStringTokenizer(br.readLine());longx=Long.parseUnsignedLong(in.nextToken());longy=Long.parseUnsignedLong(in.nextToken());longans=hmap.getOrDefault(x,0L);total+=(long)i*ans;hmap.put(x,y);}out.println(Long.toUnsignedString(total));out.flush();out.close();br.close();}小贴士
Long.parseUnsignedLong()专门解析 64 位无符号整数。Long.toString()是把最高位当作符号位,输出带正负的有符号数,而Long.toUnsignedString()不会修改内存中的数据,只是换一种规则解读二进制,把所有位都当作数值位,直接解析为无符号十进制数,和题目要求的mod 2 64 \text{mod}~2^{64}mod264结果完全一致。