結果
問題 | No.1895 Mod 2 |
ユーザー |
![]() |
提出日時 | 2024-03-20 21:03:42 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 114 ms / 2,000 ms |
コード長 | 1,540 bytes |
コンパイル時間 | 1,377 ms |
コンパイル使用メモリ | 128,604 KB |
最終ジャッジ日時 | 2025-02-20 08:19:55 |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 11 |
ソースコード
#include <iostream>#include <vector>#include <algorithm>#include <array>#include <iterator>#include <string>#include <cctype>#include <cstring>#include <cstdlib>#include <cassert>#include <cmath>#include <ctime>#include <iomanip>#include <numeric>#include <stack>#include <queue>#include <map>#include <unordered_map>#include <set>#include <unordered_set>#include <bitset>#include <random>#include <utility>#include <functional>using namespace std;vector<long long> Divisors(long long N){vector<long long> res;for(long long i = 1;i * i <= N;i++){if(N % i == 0){res.push_back(i);if(i != N / i) res.push_back(N / i);}}sort(res.begin(),res.end());return res;}int f(long long x){int ans = 0;while(x){int ok = 1,ng = (int)1e8;while(ng - ok > 1){int mid = (ok + ng) / 2;if((long long) mid * mid <= x){ok = mid;}else{ng = mid;}}ans ^= (((ok - 1) / 2 + 1) & 1);x >>= 1;}return ans;}int g(long long x){int ans = 0;for(long long d : Divisors(x)){if(d & 1){ans ^= 1;}}return ans;}void Main(){/* int N; *//* cin >> N; *//* for(int i = 1;i <= N;i++) *//* { *//* /1* cout << g(i) << (i == N ? "\n":""); *1/ *//* if(g(i)) *//* { *//* cout << i << " " << i / (i & -i) << "\n"; *//* } *//* } */long long L,R;cin >> L >> R;cout << (f(R) ^ f(L - 1)) << "\n";}int main(){ios::sync_with_stdio(false);cin.tie(nullptr);int tt = 1;cin >> tt;while(tt--) Main();}