e305. Xor 運算
標籤 : bit manipulation
通過比率 : 133人/183人 ( 73% ) [非即時]
評分方式:
Tolerant

最近更新 : 2019-07-06 08:42

內容

有一個函式如下

C/C++:

  1. long long sumxor(long long N){
  2. long long ans=0;
  3. for(long long i=0;i<N;i++){
  4. if((N^i)==(N+i))ans++;
  5. }
  6. return ans;

Python:

  1. def sumxor(N):
  2. ans=0
  3. for i in range(N):
  4. if((N^i)==(N+i)):
  5. ans+=1
  6. return ans

Java(感謝rexwu1104@gmail.com 提供):

  1. public static long sumxor(long N){
  2. long ans=0;
  3. for (long i=0;i<N;i++) {
  4. if ((N^i)==(N+i)) ans++;
  5. }
  6. return ans;
  7. }

pascal(感謝rexwu1104@gmail.com 提供):

  1. var
  2.     i, N: int64;
  3.     ans : int64 = 0;
  4. function sumxor(N: int64):int64;
  5. begin
  6.     ans:=0;
  7.     for i := 0 to N do begin
  8.         if ((N xor i) = (N + i)) then ans:=ans+1;
  9.         if (N=0) ans:=0;
  10.         sumxor:=ans;
  11.     end;
  12. end;

因為要處理的N很大,現在請你優化這個函式

輸入說明

多筆測資

一行有一個整數N(N<1015)

輸出說明

輸出函式的回傳值

範例輸入 #1
4
10
範例輸出 #1
4
4
測資資訊:
記憶體限制: 512 MB
公開 測資點#0 (50%): 0.1s , <1M
公開 測資點#1 (50%): 0.1s , <1M
提示 :
  • 測資#0:N< 1015 ,約 104 筆測資
  • 測資#1:N< 215 ,約 103 筆測資

感謝icube大大提醒,已修正錯誤

標籤:
bit manipulation
出處:
π [管理者: 314159265358 ... (少年π) ]

本題狀況 本題討論 排行

編號 身分 題目 主題 人氣 發表日期
30965 kevin010411@ ... (傅詳閎) e305
簡單說一下
301 2022-06-26 12:27
18348 vincent97198 (好想變強喔) e305
解法和原理
1550 2019-07-05 17:53