SDNU -- 1385.Problem A: XOR

SDNU - 1385.Problem A: XOR
http://www.acmicpc.sdnu.edu.cn/problem/show/1385

Description
Problem A: XOR
Given two integers S and F, what is the XOR (exclusive-or) of all numbers between S and F (inclusive)?

Input
The first line of input is the integer T, which is the number of test cases (1 ≤ T ≤ 1000). T lines follow, with each line containing two integers S and F (1 ≤ S ≤ F ≤ 1 000 000 000).

Output
For each test case, output the (decimal) value of the XOR of all numbers between S and F, inclusive.

Sample Input
5
3 10
5 5
13 42
666 1337
1234567 89101112

Sample Output
8
5
39
0
89998783

题意:
给出一个S和一个F,求S^(S+1)^(S+2)^…^F的值。

题意很简单,求的东西就很迷糊了。

在这种没有头绪的情况下,考虑一下这一类东西的一般形式,这个题是要求S^S+1^S+2^….^F,那么两个数的异或是什么样子的??是否有什么规律??研究一下这种特殊情况,然后再延伸到一般情况,也是有可能得出答案的。

首先我们需要的是异或的基本知识。
a^b^c==(a^b)^c==a^(b^c) (异或没有顺序区分)—-*①
a^0==a (一个数异或0还是本身)—-②
a^a==0 (相同的数异或为0)—-③
a^b^b==a (异或一个数两次等于没有异或,可以由①②推出)—-④

先找几组基本的两项异或。
00^01==01 01^02==03 02^03==01 03^04==07
04^05==01 05^06==03 06^07==01 07^08==15
08^09==01 09^10==03 10^11==01 11^12==07
12^13==01 13^14==03 14^15==01 15^16==31
16^17==01 17^18==03 18^19==01 19^20==07……
第二排具有一个性质,第四排的性质也可以找,为了简便我找第一排和第三排的性质。
我们把这些数提取出来发现:
0^1 2^3 4^5 6^7 8^9 ……..最后的结果都是1。

现在我们考虑我们最初的命题。
由给出的①和④可以把S^(S+1)^(S+2)^…^F写成(1^2^3^4^…^(S-1))^(1^2^3^4^…^S^(S+1)^……^F)
那我们需要算的只是1^2^3^…^(S-1)和1^2^3^…..^F
变形为0^1^2^3^…^(S-1)和0^1^2^3^…..^F
只需要看S-1和F各自的性质了。

若F是偶数,那么F-1是奇数,就需要看0~F-1中可以分成k组,这代表了k个1的异或,如果是奇数组结果就是1与F异或,如果是偶数组就是0与F的异或;若F是奇数,那么需要看的是0~F中可以分成的k组,同样代表了k个1的异或,如果是奇数组结果就是1,如果是偶数组结果就是0。
S-1的计算同样。

这样算出来了1^2^3^….^(S-1)和1^2^3^…..^F,再把这两个数异或就可以得出答案了。

代码如下:

#include <stdio.h>
int main()
{
    long long S, F, f, n, m, T, i, s, k;
    while (scanf("%lld", &T) !=EOF)
    {
        for (i = 0; i < T; i++)
        {
            scanf ("%lld %lld", &S, &F);
            if (S != F)
            {
                S = S - 1;
                if (F%2 == 1)
                {
                    n = (F+1)/2%2;
                    f = n;
                }
                else
                {
                    n = (F-1)/2%2;
                    f = F + n;
                }
                if (S%2 == 1)
                {
                    m = (S+1)/2%2;
                    s = m;
                }
                else
                {
                    m = (S-1)/2%2;
                    s = S + m;
                }
                k = f ^ s;
            }
            else
            {
                k = S ^ F;
            }
            printf ("%lld\n", k);
        }
    }
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3的DatePicker是一个日期选择器组件,可以用于选择日期。在使用之前,需要先安装依赖包,并引入相关的CSS文件。具体的安装和引入方法可以参考中的代码示例。 在使用DatePicker时,可以通过设置mode属性来控制面板的展示方式。例如,设置mode="year"可以让面板以年份显示。但需要注意的是,mode属性只是简单地改变当前显示的面板,不会修改默认的交互行为。比如,点击日期才会完成选择并关闭面板。更多关于mode属性的说明可以参考。 有时候,在使用DatePicker时可能会遇到报错。例如,报错[antdv: DatePicker] value provides invalidate moment time. If you want to set empty value, use null。解决这个错误的方法是将date-format属性改为valueFormat,例如将date-format="YYYY-MM-DD HH:mm:ss"改为valueFormat="YYYY-MM-DD HH:mm:ss"。具体代码示例可以参考。 总之,Vue 3的DatePicker是一个方便的日期选择器组件,可以根据需要进行安装和配置,通过设置mode属性来控制面板的展示方式,并注意处理可能出现的报错。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [用VueJs制作的日期选择器 vue3 datepicker](https://download.csdn.net/download/fengchunhua518/87576346)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Jeecg-boot年份选择组件](https://blog.csdn.net/Sdnu08gis/article/details/124662172)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [【vue】Jeecg框架使用过程中的注意事项:](https://blog.csdn.net/weixin_53791978/article/details/127873199)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值